ฟังก์ชันใน <cfenv> สำหรับควบคุมและตรวจสอบโหมดการปัดเศษ floating point
fesetround(round)
ตั้งค่า rounding mode คืนค่า 0 หากสำเร็จ โหมดที่รองรับ:
FE_TONEAREST- ปัดไปค่าที่ใกล้ที่สุดFE_DOWNWARD- ปัดลง (toward -∞)FE_UPWARD- ปัดขึ้น (toward +∞)FE_TOWARDZERO- ปัดเข้าศูนย์ (truncate)
fegetround()
คืนค่า macro ของ rounding mode ปัจจุบัน
โค้ดตัวอย่าง
#include <cfenv> #include <cmath> #include <iostream>
using namespace std;
void print_mode() {
switch (fegetround()) {
case FE_TONEAREST: cout << "FE_TONEAREST"; break;
case FE_DOWNWARD: cout << "FE_DOWNWARD"; break;
case FE_UPWARD: cout << "FE_UPWARD"; break;
case FE_TOWARDZERO:cout << "FE_TOWARDZERO"; break;
}
cout << endl;
}
int main() {
double x = 4.7;
fesetround(FE_TONEAREST); cout << rint(x) << " "; print_mode(); // 5
fesetround(FE_TOWARDZERO); cout << rint(x) << " "; print_mode(); // 4
fesetround(FE_DOWNWARD); cout << rint(x) << " "; print_mode(); // 4
fesetround(FE_UPWARD); cout << rint(x) << " "; print_mode(); // 5
}
ผลลัพธ์
5 FE_TONEAREST 4 FE_TOWARDZERO 4 FE_DOWNWARD 5 FE_UPWARD