命名空间
变体
操作

nearbyint、nearbyintf、nearbyintl

来自 cppreference.com
< c‎ | numeric‎ | math
 
 
 
通用数学函数
类型
(C99)(C99)    

(C99)(C99)    

函数
基本操作
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大值/最小值操作
(C99)
(C23)    
指数函数
(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)
最接近整数的浮点操作
(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)(C23)
参数和返回值
(C99)(C99)(C99)(C99)(C99)    
错误处理
(C99)    

 
在头文件 <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 nearbyint 函数 (p: 待定)
  • 7.25 类型通用数学 <tgmath.h> (p: 待定)
  • F.10.6.3 nearbyint 函数 (p: 待定)
  • C17 标准 (ISO/IEC 9899:2018)
  • 7.12.9.3 nearbyint 函数 (p: 待定)
  • 7.25 类型通用数学 <tgmath.h> (p: 待定)
  • F.10.6.3 nearbyint 函数 (p: 待定)
  • C11 标准 (ISO/IEC 9899:2011)
  • 7.12.9.3 nearbyint 函数 (p: 251-252)
  • 7.25 类型通用数学 <tgmath.h> (p: 373-375)
  • F.10.6.3 nearbyint 函数 (p: 526)
  • C99 标准 (ISO/IEC 9899:1999)
  • 7.12.9.3 nearbyint 函数 (p: 232)
  • 7.22 类型通用数学 <tgmath.h> (p: 335-337)
  • F.9.6.3 nearbyint 函数 (p: 463)

[编辑] 另请参阅

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