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. |
| Заголовочный файл <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. |
[править] Возвращаемое значение
Целое результате округления
argOriginal:
The integer result of rounding
argThe 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.
[править] Notes
Единственное различие между 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"; } }
Вывод:
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. (функция) |