C ++中的llrint()函數(shù)使用當(dāng)前的舍入模式將參數(shù)舍入為整數(shù)值。
當(dāng)前的舍入模式由fesetround()函數(shù)確定。它類似于lrint(),但是返回long long int,而不是long int。
long long int llrint(double x); long long int llrint(float x); long long int llrint(long double x); long long int llrint(T x); //為整型
llrint()函數(shù)采用單個(gè)參數(shù),并返回long long int類型的值。此函數(shù)在<cmath>頭文件中定義。
llrint()函數(shù)將單個(gè)參數(shù)值取整。
llrint()函數(shù)使用fegetround()指定的舍入方向?qū)?shù)x舍入一個(gè)整數(shù)值,并以long long int形式返回值。
默認(rèn)情況下,舍入方向設(shè)置為'to-nearest'。
可以使用fesetround()函數(shù)將舍入方向設(shè)置為其他值。
#include <iostream> #include <cmath> #include <cfenv> using namespace std; int main() { //默認(rèn)情況下,舍入方向?yàn)樽罱咏姆较?,即fesetround(FE_TONEAREST) double x = 11.87; long long int result; result = llrint(x); cout << "四舍五入到最近 (" << x << ") = " << result << endl; //中間值四舍五入為更高的整數(shù) x = 11.5; result = llrint(x); cout << "四舍五入到最近 (" << x << ") = " << result << endl; // 將舍入方向設(shè)置為DOWNWARD fesetround(FE_DOWNWARD); x = 11.87; result = llrint(x); cout << "向下舍入 (" << x << ") = " << result << endl; // 將舍入方向設(shè)置為UPWARD fesetround(FE_UPWARD); x = 33.32; result = llrint(x); cout << "向上舍入 (" << x << ") = " << result << endl; return 0; }
運(yùn)行該程序時(shí),輸出為:
四舍五入到最近 (11.87) = 12 四舍五入到最近 (11.5) = 12 向下舍入 (11.8699) = 11 向上舍入 (33.3201) = 34
#include <iostream> #include <cmath> #include <cfenv> using namespace std; int main() { int x = 15; long long int result; //將舍入方向設(shè)置為DOWNWARD fesetround(FE_DOWNWARD); result = llrint(x); cout << "向下舍入 (" << x << ") = " << result << endl; return 0; }
運(yùn)行該程序時(shí),輸出為:
向下舍入 (15) = 15
對(duì)于整數(shù)值,應(yīng)用llrint函數(shù)將返回與輸入相同的值。所以它在實(shí)際中并不常用來表示整數(shù)值。