Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Rint(), rintf(), rintl() ใน C++


ที่นี่เราจะเห็นสามฟังก์ชั่น ฟังก์ชันเหล่านี้คือ Rint(), rintf() และ rintl() ฟังก์ชันเหล่านี้ใช้เพื่อแปลงค่าทศนิยมให้เป็นรูปแบบโค้งมน

ฟังก์ชัน rint()

ฟังก์ชันนี้ใช้สำหรับการปัดเศษค่าทศนิยมให้เป็นจำนวนเต็ม ไวยากรณ์เป็นเหมือนด้านล่าง หากผลลัพธ์อยู่นอกประเภทการส่งคืน ข้อผิดพลาดของโดเมนอาจเกิดขึ้น เมื่ออาร์กิวเมนต์เป็น 0 หรืออนันต์ อาร์กิวเมนต์จะคืนค่าเป็น unmodified

float rint(float argument)
double rint(double argument)
long double rint(long double argument)

ตัวอย่าง

#include <cmath>
#include <iostream>
using namespace std;
main() {
   double a, b, x, y;
   x = 53.26;
   y = 53.86;
   a = rint(x);
   b = rint(y);
   cout << "The value of a: " << a << endl;
   cout << "The value of b: " << b;
}

ผลลัพธ์

The value of a: 53
The value of b: 54

ฟังก์ชัน rintf()

สิ่งนี้เหมือนกับ rint แต่ความแตกต่างเพียงอย่างเดียวคือพารามิเตอร์และประเภทการส่งคืนทั้งหมดเป็นประเภท float ในตัวอย่างนี้ เราจะใช้วิธี fesetround() เพื่อระบุประเภทรอบ

float rintf(float argument)

ตัวอย่าง

#include <cmath>
#include <fenv.h>
#include <iostream>
using namespace std;
main() {
   double a, b, x, y;
   x = 53.26;
   y = 53.86;
   fesetround(FE_UPWARD);
   a = rintf(x);
   fesetround(FE_DOWNWARD);
   b = rintf(y);
   cout << "The value of a: " << a << endl;
   cout << "The value of b: " << b;
}

ผลลัพธ์

The value of a: 54
The value of b: 53

ฟังก์ชัน rintl()

สิ่งนี้เหมือนกับ rint แต่ความแตกต่างเพียงอย่างเดียวอยู่ที่นี่ พารามิเตอร์และประเภทการส่งคืนทั้งหมดเป็นประเภท long double ในตัวอย่างนี้ เราจะใช้วิธี fesetround() เพื่อระบุประเภทรอบ

long double rintl(long double argument)

ตัวอย่าง

#include <cmath>
#include <fenv.h>
#include <iostream>
using namespace std;
main() {
   double a, b, x, y;
   x = 53547.55555555555;
   y = 53547.55555555523;
   fesetround(FE_UPWARD);
   a = rintl(x);
   fesetround(FE_DOWNWARD);
   b = rintl(y);
   cout << "The value of a: " << a << endl;
   cout << "The value of b: " << b;
}

ผลลัพธ์

The value of a: 53548
The value of b: 53547