std::rint, std::lrint, std::llrint
来自cppreference.com
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
Defined in header <cmath>
|
||
int rint( float arg ); |
(C++11 起) | |
int rint( double arg ); |
(C++11 起) | |
int rint( long double arg ); |
(C++11 起) | |
int rint( Integral arg ); |
(C++11 起) | |
long lrint( float arg ); |
(C++11 起) | |
long lrint( double arg ); |
(C++11 起) | |
long lrint( long double arg ); |
(C++11 起) | |
long lrint( Integral arg ); |
(C++11 起) | |
long long llrint( float arg ); |
(C++11 起) | |
long long llrint( double arg ); |
(C++11 起) | |
long long llrint( long double arg ); |
(C++11 起) | |
long long llrint( Integral arg ); |
(C++11 起) | |
舍入浮点参数
arg
一个整数值,浮点格式,使用当前的舍入模式。如果结果是不同的arg
(即arg
已经不是一个整数值),的浮点异常FE_INEXACT,提高.Original:
Rounds the floating-point argument
arg
to an integer value in floating-point format, using the current rounding mode. If the result differs from arg
(i.e., arg
was not an integer value already), the floating-point exception FE_INEXACT is raised.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
目录 |
[编辑] 参数
arg | - | 浮点值
Original: floating point value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[编辑] 返回值
的整数结果四舍五入
arg
Original:
The integer result of rounding
arg
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 注释
唯一的区别std::nearbyint和std::rint的是,std::rint可以提高FE_INEXACT浮点异常,而std::nearbyint不会提高.
Original:
The only difference between std::nearbyint and std::rint is that std::rint may raise the FE_INEXACT floating-point exception, while std::nearbyint never raises it.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 为例
#include <cmath> #include <cfenv> #include <iostream> int main() { #pragma STDC FENV_ACCESS ON std::fesetround(FE_DOWNWARD); std::cout << "rounding using FE_DOWNWARD:\n" << std::fixed << " 12.0 -> " << std::rint(12.0) << '\n' << " 12.1 -> " << std::rint(12.1) << '\n' << "-12.1 -> " << std::rint(-12.1) << '\n' << " 12.5 -> " << std::rint(12.5) << '\n' << " 12.9 -> " << std::rint(12.9) << '\n' << "-12.9 -> " << std::rint(-12.9) << '\n' << " 13.0 -> " << std::rint(13.0) << '\n'; std::fesetround(FE_TONEAREST); std::cout << "rounding using FE_TONEAREST: \n" << " 12.0 -> " << std::rint(12.0) << '\n' << " 12.1 -> " << std::rint(12.1) << '\n' << "-12.1 -> " << std::rint(-12.1) << '\n' << " 12.5 -> " << std::rint(12.5) << '\n' << " 12.9 -> " << std::rint(12.9) << '\n' << "-12.9 -> " << std::rint(-12.9) << '\n' << " 13.0 -> " << std::rint(13.0) << '\n'; std::cout << "When rounding 12.0 "; std::feclearexcept(FE_ALL_EXCEPT); std::rint(12.0); if(std::fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) { std::cout << "inexact result reported\n"; } else { std::cout << "inexact result not reported\n"; } std::cout << "When rounding 12.1 "; std::rint(12.1); if(std::fetestexcept(FE_ALL_EXCEPT) & FE_INEXACT) { std::cout << "inexact result reported\n"; } else { std::cout << "inexact result not reported\n"; } }
Output:
rounding using FE_DOWNWARD: 12.0 -> 12.000000 12.1 -> 12.000000 -12.1 -> -13.000000 12.5 -> 12.000000 12.9 -> 12.000000 -12.9 -> -13.000000 13.0 -> 13.000000 rounding using FE_TONEAREST: 12.0 -> 12.000000 12.1 -> 12.000000 -12.1 -> -12.000000 12.5 -> 12.000000 12.9 -> 13.000000 -12.9 -> -13.000000 13.0 -> 13.000000 When rounding 12.0 inexact result not reported When rounding 12.1 inexact result reported
[编辑] 另请参阅
(C++11) |
最接近的整数,使用当前的舍入模式 Original: nearest integer using current rounding mode The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (函数) |
(C++11) |
最接近的整数的幅值比不大于给定值 Original: nearest integer not greater in magnitude than the given value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (函数) |
(C++11) (C++11) |
获取或设置舍入的方向 Original: gets or sets rounding direction The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (函数) |