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


C++ rint(), rintf(), rintl()用法及代碼示例


rint()用於將浮點參數舍入為整數值(采用浮點格式)。您還可以使用函數fesetround()確定當前的舍入模式,根據該函數rint函數將返回舍入的整數值。

語法:
double rint(double x);
float rint(float x);
long double rint(long double x);

Header file: cmath
參數: The rint() function takes a single 
argument value to round.

返回:  By default, the rounding direction is set to 
'to-nearest' otherwise the rint() function rounds the argument 
to an integral value, using the rounding direction 
specified by fegetround() and returns the value.

異常或錯誤
1.如果函數的結果超出返回類型的範圍,則可能會發生域錯誤。
2.如果參數為0,則返回原樣。
3.如果參數為無窮大,則返回原樣。

例子:


Input:3.3
Output:3

Input:3.5
Output:4

Input:3.7
Output:4
// CPP program to illustrate rint() 
#include <cmath> 
#include <iostream> 
using namespace std; 
// Driver Program 
int main() 
{ 
    double a, b, x = 3.3, y = 3.7; 
  
    // Saves the rounded value to a variable 
    a = rint(x); 
    b = rint(y); 
  
    // Prints the rounded value 
    cout << a << endl; 
  
    cout << b; 
    return 0; 
}

輸出:

3
4

fesetround() function

默認情況下,舍入方向設置為最接近的整數。但是使用fesetround()函數,我們可以選擇方向。
用法:

fesetround(FE_DOWNWARD)
fesetround(FE_UPWARD)
Header file:cfenv

例:

  • 如果將rint()函數與參數3.7一起使用並且還使用了fesetround(FE_DOWNWARD),則輸出為3
  • 如果將rint()函數與參數3.3一起使用並且還使用了fesetround(FE_UPWARD),則輸出為4
// CPP program to illustrate rint() 
// with fesetround() function 
#include <cfenv> 
#include <cmath> 
#include <iostream> 
using namespace std; 
// Driver Program 
int main() 
{ 
    double x = 3.7, y = 3.3, result; 
  
    // setting rounding direction to DOWNWARD 
    fesetround(FE_DOWNWARD); 
  
    result = rint(x); 
    cout << result << endl; 
  
    // setting rounding direction to UPWARD 
    fesetround(FE_UPWARD); 
  
    result = rint(y); 
    cout << result << endl; 
  
    return 0; 
}

輸出:

3
4

rintf() function

rintf()函數與rint函數相同。唯一的區別是函數的參數和返回類型為浮點型。附加到“ rintf”後麵的“ f”字符代表float,它表示函數的參數類型和返回類型。

用法:
float rintf(float x);

在此,為變量分配浮點類型,否則會發生類型不匹配錯誤。

// CPP program to illustrate rinft() 
#include <cfenv> 
#include <cmath> 
#include <iostream> 
using namespace std; 
// Driver Program 
int main() 
{ 
    float x = 3.76542, y = 3.37562, result; 
    // setting rounding direction to DOWNWARD 
    fesetround(FE_DOWNWARD); 
  
    result = rintf(x); 
    cout << result << endl; 
  
    // setting rounding direction to UPWARD 
    fesetround(FE_UPWARD); 
  
    result = rintf(y); 
    cout << result << endl; 
  
    return 0; 
}

輸出:

3
4

rintl() function

rintl()函數與rint函數相同,唯一的區別是該函數的參數和返回類型為long double類型。附加在'rintl'上的'l'字符代表long double並表示參數類型和返回類型函數的

用法:
long double rintl(long double x);

在此,為變量分配了long double類型,否則會發生類型不匹配錯誤。

// CPP program to illustrate rinfl() 
  
#include <cfenv> 
#include <cmath> 
#include <iostream> 
using namespace std; 
  
// Driver Program 
int main() 
{ 
    long double x = 3.765426764, y = 3.37562657, result; 
  
    // setting rounding direction to DOWNWARD 
    fesetround(FE_DOWNWARD); 
  
    result = rintl(x); 
    cout << result << endl; 
  
    // setting rounding direction to UPWARD 
    fesetround(FE_UPWARD); 
  
    result = rintl(y); 
    cout << result << endl; 
  
    return 0; 
}

輸出:

3
4


相關用法


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