C 库 - fegetround() 函数
C fenv 库中的 fegetround() 函数是浮点环境的一部分,可用于访问当前的舍入模式。此模式以舍入形式表示浮点数。该函数广泛应用于图形、数值分析和金融计算等各个领域。
语法
以下是 fegetround() 函数的 C 库语法。
int fegetround(void);
参数
此函数不接受任何参数。
返回值
此函数返回代表以下舍入模式之一的整数值 -
FE_TONEAREST:此参数定义舍入到最接近的数,也就是零。
FE_DOWNWARD:此参数定义向负无穷大舍入。
FE_UPWARD:此参数定义向正无穷大舍入。
FE_TOWARDZERO:此参数定义舍入值为零。
示例 1
以下是显示以下示例的基本 C 库程序: fegetround() 函数的用法。
#include <stdio.h> #include <fenv.h> int main() { int round_mode = fegetround(); printf("Current rounding mode: %d", round_mode); return 0; }
输出
上述代码产生以下结果 -
Current rounding mode: 0
示例 2
下面的程序首先检查当前的舍入模式并打印其值。然后,我们使用 fesetround 设置参数 FE_DOWNWARD,该函数确定值向负无穷方向舍入并显示结果。
#include <stdio.h> #include <fenv.h> int main() { // 检查当前舍入模式 int round_mode = fegetround(); printf("Current rounding mode: %d", round_mode); // 将舍入模式设置为向下 fesetround(FE_DOWNWARD); round_mode = fegetround(); printf("Rounding mode after setting to FE_DOWNWARD: %d", round_mode); return 0; }
输出
执行上述代码后,我们得到以下结果 -
Current rounding mode: 0 Rounding mode after setting to FE_DOWNWARD: 1024
示例 3
fegetround() 函数接受参数 FE_TONEAREST,并使用 rint 函数执行舍入计算,该函数对接受的整数值进行舍入。最终,输出显示了不同的舍入模式如何影响 rint 函数的结果。
#include <stdio.h> #include <fenv.h> #include <math.h> int main() { // 将舍入模式设置为最接近 fesetround(FE_TONEAREST); // 执行计算 double result = rint(3.5); printf("FE_TONEAREST 的结果: %f", result); // 将舍入模式更改为向零舍入 fesetround(FE_TOWARDZERO); // 执行相同的计算 result = rint(3.5); printf("FE_TOWARDZERO 的结果: %f", result); return 0; }
输出
执行上述代码后,我们得到以下结果 -
FE_TONEAREST 的结果: 4.000000 FE_TOWARDZERO 的结果: 3.000000