C++ nearbyint() 函数使用方法及示例

由网友 大卫 发布 阅读 1

C++ nearbyint() 函数使用方法及示例

C++ 库函数 <cmath>

C ++中的neighborint(x)函数它将值x舍入为附近的整数值。

当前的舍入模式由函数fesetround()确定。nearbyint()函数与rint()相似,除了它不像rint()那样引发FE_INEXACT异常。

FE_INEXACT异常是一个浮点异常,当由于四舍五入或逐渐下溢而无法完全表示操作结果时,将发生此异常。

nearbyint()原型[从C ++ 11标准开始]

double nearbyint(double x);

float nearbyint(float x);

long double nearbyint(long double x);

double nearbyint(T x); //为整型

nearbyint()函数采用单个参数,并返回double,float或long double类型的值。此函数在<cmath>头文件中定义。

nearbyint()参数

nearbyint()函数将单个参数值取整。

nearbyint()返回值

nearbyint()函数使用fegetround()指定的舍入方向将参数x舍入为整数值,并返回该值。默认情况下,舍入方向设置为“最接近”。可以使用fesetround()函数将舍入方向设置为其他值。

示例1:nearbyint()如何在C ++中工作?

#include <iostream>
#include <cmath>
#include <cfenv>
using namespace std;

int main()

{
    //默认情况下,舍入方向为最接近的方向,即fesetround(FE_TONEAREST)
    double x = 11.87, result;
    result = nearbyint(x);
    cout << "四舍五入到最近 (" << x << ") = " << result << endl;
    
    // upper value is taken for mid-way values
    x = 11.5;
    result = nearbyint(x);
    cout << "四舍五入到最近 (" << x << ") = " << result << endl;

    // 将舍入方向设置为DOWNWARD
    fesetround(FE_DOWNWARD);

    x = 17.87;

    result = nearbyint(x);

    cout << "向下舍入 (" << x << ") = " << nearbyint(x) << endl;

    //将舍入方向设置为UPWARD
    x = 33.34;
    fesetround(FE_UPWARD);
    result = nearbyint(x);
    cout << "向上舍入 (" << x << ") = " << result << endl;    

    return 0;

}

运行该程序时,输出为:

四舍五入到最近 (11.87) = 12
四舍五入到最近 (11.5) = 12
向下舍入 (17.87) = 17
向上舍入 (33.34) = 34

示例2:整数类型的neighborint()函数

#include <iostream>
#include <cmath>
#include <cfenv>
using namespace std;

int main()

{
    int x = 15;
    double result;

    //将舍入方向设置为DOWNWARD
    
    fesetround(FE_DOWNWARD);
    result = nearbyint(x);
    cout << "向下舍入 (" << x << ") = " << result << endl;

    return 0;

}

运行该程序时,输出为:

向下舍入 (15) = 15

对于整数值,应用nearbyint函数将返回与输入相同的值。因此,在实践中,它通常不用于积分值。

C++ 库函数 <cmath>

C++ llround() 函数 C++ ldexp() 函数