std::rint, std::lrint, std::llrint
De 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. |
<metanoindex/>
<tbody> </tbody>| Dclar dans l'en-tte <cmath>
|
||
int rint( float arg ); |
(depuis C++11) | |
int rint( double arg ); |
(depuis C++11) | |
int rint( long double arg ); |
(depuis C++11) | |
int rint( Integral arg ); |
(depuis C++11) | |
long lrint( float arg ); |
(depuis C++11) | |
long lrint( double arg ); |
(depuis C++11) | |
long lrint( long double arg ); |
(depuis C++11) | |
long lrint( Integral arg ); |
(depuis C++11) | |
long long llrint( float arg ); |
(depuis C++11) | |
long long llrint( double arg ); |
(depuis C++11) | |
long long llrint( long double arg ); |
(depuis C++11) | |
long long llrint( Integral arg ); |
(depuis C++11) | |
Arrondit la
arg argument en virgule flottante en une valeur entire en format virgule flottante, en utilisant le mode d'arrondi courant. Si le rsultat est diffrent de arg (c.--arg n'tait pas une valeur entire dj), le FE_INEXACT exception de virgule flottante est lev .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.
Paramtres
| arg | - | valeur du point flottant
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. |
Retourne la valeur
Le rsultat entier de
arg arrondisOriginal:
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
La seule diffrence entre std::nearbyint et std::rint est que std::rint peut soulever la FE_INEXACT exception de virgule flottante, tandis que std::nearbyint jamais elle soulve .
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.
Exemple
#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";
}
}
Rsultat :
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
Voir aussi
(C++11) |
entier le plus proche en utilisant le mode d'arrondi courant 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. (fonction) |
(C++11) |
entier le plus proche n'est pas suprieure en grandeur la valeur donne 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. (fonction) |
(C++11) (C++11) |
obtient ou dfinit direction d'arrondi 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. (fonction) |