std::rint, std::lrint, std::llrint
提供: cppreference.com
![]() |
このページは、Google 翻訳を使って英語版から機械翻訳されました。
翻訳には誤りや奇妙な言い回しがあるかもしれません。文章の上にポインタをおくと、元の文章が見れます。誤りを修正して翻訳を改善する手助けをしてください。翻訳についての説明は、ここをクリックしてください。 |
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::rintstd::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. (関数) |