命名空间
变体
操作

nearbyint, nearbyintf, nearbyintl

来自 cppreference.cn
< c‎ | numeric‎ | math
 
 
 
常用数学函数
函数
基本操作
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大/最小值操作
(C99)
(C99)
指数函数
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
幂函数
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
三角函数和双曲函数
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
最近整数浮点
(C99)(C99)(C99)
(C99)

nearbyint
(C99)
(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮点操作
(C99)(C99)
(C99)(C23)
(C99)
窄化操作
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量子和量子指数
十进制重编码函数
总阶数和有效载荷函数
分类
(C99)
(C99)
(C99)
(C23)
误差和伽玛函数
(C99)
(C99)
(C99)
(C99)
类型
宏常量
特殊浮点值
(C99)(C23)
参数和返回值
错误处理
快速操作指示符
 
定义于头文件 <math.h>
float       nearbyintf( float arg );
(1) (自 C99 起)
double      nearbyint( double arg );
(2) (自 C99 起)
long double nearbyintl( long double arg );
(3) (自 C99 起)
定义于头文件 <tgmath.h>
#define nearbyint( arg )
(4) (自 C99 起)
1-3) 将浮点参数 arg 舍入为浮点格式的整数值,使用当前舍入模式
4) 类型泛型宏:如果 arg 具有类型 long double,则调用 nearbyintl。 否则,如果 arg 具有整数类型或类型 double,则调用 nearbyint。 否则,分别调用 nearbyintf

目录

[编辑] 参数

arg - 浮点值

[编辑] 返回值

返回最接近 arg 的整数值,根据当前舍入模式

[编辑] 错误处理

此函数不受 math_errhandling 中指定的任何错误的影响。

如果实现支持 IEEE 浮点算术 (IEC 60559),

  • FE_INEXACT 永远不会被引发。
  • 如果 arg 是 ±∞,则返回,不修改。
  • 如果 arg 是 ±0,则返回,不修改。
  • 如果 arg 是 NaN,则返回 NaN。

[编辑] 注解

nearbyintrint 之间唯一的区别是 nearbyint 永远不会引发 FE_INEXACT

最大的可表示浮点值在所有标准浮点格式中都是精确的整数,因此 nearbyint 本身永远不会溢出;但是,当存储在整数变量中时,结果可能会溢出任何整数类型(包括 intmax_t)。

如果当前的舍入模式是 FE_TONEAREST,则此函数在中间值情况下舍入到最接近的偶数(如 rint,但不像 round)。

[编辑] 示例

#include <fenv.h>
#include <math.h>
#include <stdio.h>
 
int main(void)
{
// #pragma STDC FENV_ACCESS ON
    fesetround(FE_TONEAREST);
    printf("rounding to nearest:\nnearbyint(+2.3) = %+.1f  ", nearbyint(2.3));
    printf("nearbyint(+2.5) = %+.1f  ", nearbyint(2.5));
    printf("nearbyint(+3.5) = %+.1f\n", nearbyint(3.5));
    printf("nearbyint(-2.3) = %+.1f  ", nearbyint(-2.3));
    printf("nearbyint(-2.5) = %+.1f  ", nearbyint(-2.5));
    printf("nearbyint(-3.5) = %+.1f\n", nearbyint(-3.5));
 
    fesetround(FE_DOWNWARD);
    printf("rounding down: \nnearbyint(+2.3) = %+.1f  ", nearbyint(2.3));
    printf("nearbyint(+2.5) = %+.1f  ", nearbyint(2.5));
    printf("nearbyint(+3.5) = %+.1f\n", nearbyint(3.5));
    printf("nearbyint(-2.3) = %+.1f  ", nearbyint(-2.3));
    printf("nearbyint(-2.5) = %+.1f  ", nearbyint(-2.5));
    printf("nearbyint(-3.5) = %+.1f\n", nearbyint(-3.5));
 
    printf("nearbyint(-0.0) = %+.1f\n", nearbyint(-0.0));
    printf("nearbyint(-Inf) = %+.1f\n", nearbyint(-INFINITY));
}

输出

rounding to nearest:
nearbyint(+2.3) = +2.0  nearbyint(+2.5) = +2.0  nearbyint(+3.5) = +4.0
nearbyint(-2.3) = -2.0  nearbyint(-2.5) = -2.0  nearbyint(-3.5) = -4.0
rounding down:
nearbyint(+2.3) = +2.0  nearbyint(+2.5) = +2.0  nearbyint(+3.5) = +3.0
nearbyint(-2.3) = -3.0  nearbyint(-2.5) = -3.0  nearbyint(-3.5) = -4.0
nearbyint(-0.0) = -0.0
nearbyint(-Inf) = -inf

[编辑] 参考文献

  • C23 标准 (ISO/IEC 9899:2024)
  • 7.12.9.3 The nearbyint functions (p: TBD)
  • 7.25 Type-generic math <tgmath.h> (p: TBD)
  • F.10.6.3 The nearbyint functions (p: TBD)
  • C17 标准 (ISO/IEC 9899:2018)
  • 7.12.9.3 The nearbyint functions (p: TBD)
  • 7.25 Type-generic math <tgmath.h> (p: TBD)
  • F.10.6.3 The nearbyint functions (p: TBD)
  • C11 标准 (ISO/IEC 9899:2011)
  • 7.12.9.3 The nearbyint functions (p: 251-252)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • F.10.6.3 The nearbyint functions (p: 526)
  • C99 标准 (ISO/IEC 9899:1999)
  • 7.12.9.3 The nearbyint functions (p: 232)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • F.9.6.3 The nearbyint functions (p: 463)

[编辑] 参见

(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)
使用当前舍入模式舍入为整数,带
如果结果不同则异常
(函数) [编辑]
(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)
舍入到最接近的整数,在中间值情况下远离零舍入
(函数) [编辑]
获取或设置舍入方向
(函数) [编辑]
C++ 文档 关于 nearbyint