當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ lrint()用法及代碼示例


C++ 中的lrint() 函數使用當前舍入模式將參數舍入為整數值。

C++ 中的lrint() 函數使用當前舍入模式將參數舍入為整數值。當前舍入模式由函數 fesetround() 確定。它類似於 rint() ,但返回 long int

lrint() 原型 [從 C++ 11 標準開始]

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

lrint() 函數采用單個參數並返回類型為 long int 的值。該函數在<cmath> 頭文件中定義。

參數:

lrint() 函數采用單個參數值進行舍入。

返回:

lrint() 函數使用 fegetround() 指定的舍入方向將參數 x 舍入為整數值,並返回 long int 中的值。

默認情況下,舍入方向設置為'to-nearest'。可以使用fesetround() 函數將舍入方向設置為其他值。

示例 1:lrint() 如何在 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;
    long int result;
    result = lrint(x);
    cout << "Rounding to-nearest (" << x << ") = " << result << endl;
    
    // mid-way values are rounded off to higher integer
    x = 11.5;
    result = lrint(x);
    cout << "Rounding to-nearest (" << x << ") = " << result << endl;

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

運行程序時,輸出將是:

Rounding to-nearest (11.87) = 12
Rounding to-nearest (11.5) = 12
Rounding downward (11.8699) = 11
Rounding upward (33.3201) = 34

示例 2:用於整數類型的 lrint() 函數

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

int main()
{
    int x = 15;
    long int result;
    
    // setting rounding direction to DOWNWARD
    fesetround(FE_DOWNWARD);
    result = lrint(x);
    cout << "Rounding downward (" << x << ") = " << result << endl;
    return 0;
}

運行程序時,輸出將是:

Rounding downward (15) = 15

對於整數值,應用 lrint 函數返回與輸入相同的值。所以在實踐中它並不常用於整數值。

相關用法


注:本文由純淨天空篩選整理自 C++ lrint()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。