首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

nearbyintf

在头文件<math.h>中定义

?

?

float nearbyintf( float arg );

(1)

(since C99)

double nearbyint( double arg );

(2)

(since C99)

long double nearbyintl( long double arg );

(3)

(since C99)

Defined in header <tgmath.h>

?

?

#define nearbyint( arg )

(4)

(since C99)

1-3)arg使用当前舍入模式将浮点参数四舍五入为浮点格式的整数值。

4)类型 - 通用宏:如果arg有类型long doublenearbyintl被调用。否则,如果arg有整数类型或类型doublenearbyint则调用。否则nearbyintf,分别称为。

参数

arg

-

浮点值

返回值

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

错误处理

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

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

  • FE_INEXACT 从未被提出
  • 如果arg是±∞,则返回,未修改
  • 如果arg为±0,则返回,未修改
  • 如果arg是NaN,则返回NaN

笔记

之间唯一的区别nearbyintrintnearbyint永远不会提高FE_INEXACT

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

如果当前的舍入模式是FE_TONEAREST,这个函数甚至在一半的情况下(例如rint,但不像round)。

代码语言:javascript
复制
#include <stdio.h>
#include <math.h>
#include <fenv.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));
}

输出:

代码语言:javascript
复制
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

参考

  • C11标准(ISO / IEC 9899:2011):
    • 7.12.9.3附近的功能(p:251-252)
    • 7.25类型通用数学<tgmath.h>(p:373-375)
    • F.10.6.3附近的函数(p:526)
  • C99标准(ISO / IEC 9899:1999):
    • 7.12.9.3附近的函数(p:232)
    • 7.22类型通用数学<tgmath.h>(p:335-337)
    • F.9.6.3 nearbyint函数(p:463)

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com