.- .
将指定的浮点值舍入为整数,并以浮点格式返回该值。
语法
double nearbyint( double x );
float nearbyintf( float x );
long double nearbyintl( long double x );
#define nearbyint( X ) // Requires C11 or higher
float nearbyint( float x ); //C++ only
long double nearbyint( long double x ); //C++ only
参数
x
要舍入的值。
返回值
如果成功,则返回 x
,舍入到最接近的整数,使用 fegetround
报告的当前舍入格式。 否则,该函数返回以下值之一:
问题 | 返回值 |
---|---|
x = ±INFINITY |
±INFINITY,未修改 |
x = ±0 |
±0,未修改 |
x = NaN |
NaN |
错误不会通过 _matherr
报告;具体而言,此函数不会报告任何 FE_INEXACT
异常。
注解
此函数和 rint
的主要区别是此函数不会引发不精确的浮点异常。
因为最大浮点值均为精确的整数,所以此函数本身不会溢出;而输出可能会溢出返回值,具体取决于所使用函数的版本。
C++ 允许重载,因此可以调用采用并返回 float
或 long double
参数的 nearbyint
重载。 在 C 程序中,除非使用 <tgmath.h> 宏调用此函数,否则 nearbyint
始终采用两个双精度值并返回一个双精度值。
如果使用 <tgmath.h>nearbyint()
宏,则参数的类型将决定选择哪个版本的函数。 有关详细信息,请参阅泛型类型数学。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
要求
函数 | C 标头 | C++ 标头 |
---|---|---|
.- . | <math.h> | <cmath> 或 <math.h> |
nearbyint 宏 |
<tgmath.h> |
有关兼容性的详细信息,请参阅 兼容性。