📅  最后修改于: 2020-09-25 07:13:10             🧑  作者: Mango
fegetround() 函数在
int fegetround();
Macro | Description |
---|---|
FE_DOWNWARD | Round downward |
FE_TONEAREST | Round to nearest value |
FE_TOWARDZERO | Round towards zero |
FE_UPWARD | Round upward |
#include
#include
#include
#pragma STDC FENV_ACCESS ON
using namespace std;
void print_current_rounding_direction()
{
cout << "Current rounding method: ";
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;
default:
cout << "unknown";
};
cout << endl;
}
int main(void)
{
print_current_rounding_direction();
cout << "6.2 -> " << rint(6.2) << endl;
cout << "18.7 -> " << rint(18.7) << endl;
fesetround(FE_UPWARD);
print_current_rounding_direction();
cout << "6.2 -> " << rint(6.2) << endl;
cout << "19.7 -> " << rint(19.7) << endl;
fesetround(FE_DOWNWARD);
print_current_rounding_direction();
cout << "6.2 -> " << rint(6.2) << endl;
cout << "19.7 -> " << rint(19.7) << endl;
return 0;
}
运行该程序时,输出为:
Current rounding method: FE_TONEAREST
6.2 -> 6
18.7 -> 19
Current rounding method: FE_UPWARD
6.2 -> 7
19.7 -> 20
Current rounding method: FE_DOWNWARD
6.2 -> 6
19.7 -> 19