当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ nearbyint()用法及代码示例


C++ 中的nearbyint() 函数使用当前舍入模式将参数舍入为整数值。

C++ 中的nearbyint() 函数使用当前舍入模式将参数舍入为整数值。当前舍入模式由函数 fesetround() 确定。 nearbyint() 函数类似于 rint() ,只是它不会像 rint() 那样引发 FE_INEXACT 异常。

FE_INEXACT exception 是一个浮点异常,当运算结果由于舍入或逐渐下溢而未准确表示时发生。

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

double nearbyint(double x);
float nearbyint(float x);
long double nearbyint(long double x);
double nearbyint(T x); // For integral type

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

参数:

nearbyint() 函数采用单个参数值进行舍入。

返回:

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

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

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

int main()
{
    // by default, rounding direction is to-nearest i.e. fesetround(FE_TONEAREST)
    double x = 11.87, result;
    result = nearbyint(x);
    cout << "Rounding to-nearest (" << x << ") = " << result << endl;
    
    // upper value is taken for mid-way values
    x = 11.5;
    result = nearbyint(x);
    cout << "Rounding to-nearest (" << x << ") = " << result << endl;

    // setting rounding direction to DOWNWARD
    fesetround(FE_DOWNWARD);
    x = 17.87;
    result = nearbyint(x);
    cout << "Rounding downward (" << x << ") = " << nearbyint(x) << endl;
    
    // setting rounding direction to UPWARD
    x = 33.34;
    fesetround(FE_UPWARD);
    result = nearbyint(x);
    cout << "Rounding upward (" << x << ") = " << result << endl;
    
    return 0;
}

运行程序时,输出将是:

Rounding to-nearest (11.87) = 12 Rounding to-nearest (11.5) = 12 Rounding downward (17.87) = 17 Rounding upward (33.3401) = 34

示例 2:用于整数类型的 nearbyint() 函数

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

int main()
{
    int x = 15;
    double result;
    
    // setting rounding direction to DOWNWARD
    fesetround(FE_DOWNWARD);
    result = nearbyint(x);
    cout << "Rounding downward (" << x << ") = " << result << endl;

    return 0;
}

运行程序时,输出将是:

Rounding downward (15) = 15

对于整数值,应用nearbyint 函数返回与输入相同的值。所以在实践中它并不常用于整数值。

相关用法


注:本文由纯净天空筛选整理自 C++ nearbyint()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。