nearbyint, nearbyintf, nearbyintl
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ヘッダーで定義
<math.h>
|
||
|
float
nearbyintf
(
float
arg
)
;
|
(1) | (C99以降) |
|
double
nearbyint
(
double
arg
)
;
|
(2) | (C99以降) |
|
long
double
nearbyintl
(
long
double
arg
)
;
|
(3) | (C99以降) |
|
ヘッダーで定義
<tgmath.h>
|
||
|
#define nearbyint( arg )
|
(4) | (C99以降) |
nearbyintl
が呼び出される。それ以外の場合、
arg
が整数型または
double
型の場合、
nearbyint
が呼び出される。それ以外の場合、それぞれ
nearbyintf
が呼び出される。
目次 |
パラメータ
| arg | - | 浮動小数点値 |
戻り値
arg に最も近い整数値を、 現在の丸めモード に従って返します。
エラーハンドリング
この関数は、
math_errhandling
で指定されているいかなるエラーにも影響されません。
IEEE浮動小数点演算(IEC 60559)を実装がサポートしている場合、
- FE_INEXACT は決して発生しません。
- arg が ±∞ の場合、変更されずに返されます。
- arg が ±0 の場合、変更されずに返されます。
- arg が NaN の場合、NaN が返されます。
注記
nearbyint
と
rint
の唯一の違いは、
nearbyint
が決して
FE_INEXACT
を発生させないことです。
標準的な浮動小数点形式において、表現可能な最大の浮動小数点値はすべて正確な整数であるため、
nearbyint
単体では決してオーバーフローを起こしません。しかし、結果を整数型(
intmax_t
を含む)の変数に格納する場合、その結果は整数型の範囲をオーバーフローする可能性があります。
現在の丸めモードが FE_TONEAREST の場合、この関数は中間の場合に偶数へ丸めます( rint と同様ですが、 round とは異なります)。
例
#include <fenv.h> #include <math.h> #include <stdio.h> int main(void) { // #pragma STDC FENV_ACCESS ON fesetround(FE_TONEAREST); printf("rounding to nearest:\nnearbyint(+2.3) = %+.1f ", nearbyint(2.3)); printf("nearbyint(+2.5) = %+.1f ", nearbyint(2.5)); printf("nearbyint(+3.5) = %+.1f\n", nearbyint(3.5)); printf("nearbyint(-2.3) = %+.1f ", nearbyint(-2.3)); printf("nearbyint(-2.5) = %+.1f ", nearbyint(-2.5)); printf("nearbyint(-3.5) = %+.1f\n", nearbyint(-3.5)); fesetround(FE_DOWNWARD); printf("rounding down: \nnearbyint(+2.3) = %+.1f ", nearbyint(2.3)); printf("nearbyint(+2.5) = %+.1f ", nearbyint(2.5)); printf("nearbyint(+3.5) = %+.1f\n", nearbyint(3.5)); printf("nearbyint(-2.3) = %+.1f ", nearbyint(-2.3)); printf("nearbyint(-2.5) = %+.1f ", nearbyint(-2.5)); printf("nearbyint(-3.5) = %+.1f\n", nearbyint(-3.5)); printf("nearbyint(-0.0) = %+.1f\n", nearbyint(-0.0)); printf("nearbyint(-Inf) = %+.1f\n", nearbyint(-INFINITY)); }
出力:
rounding to nearest: nearbyint(+2.3) = +2.0 nearbyint(+2.5) = +2.0 nearbyint(+3.5) = +4.0 nearbyint(-2.3) = -2.0 nearbyint(-2.5) = -2.0 nearbyint(-3.5) = -4.0 rounding down: nearbyint(+2.3) = +2.0 nearbyint(+2.5) = +2.0 nearbyint(+3.5) = +3.0 nearbyint(-2.3) = -3.0 nearbyint(-2.5) = -3.0 nearbyint(-3.5) = -4.0 nearbyint(-0.0) = -0.0 nearbyint(-Inf) = -inf
参考文献
- C23規格 (ISO/IEC 9899:2024):
-
- 7.12.9.3 nearbyint関数群 (p: TBD)
-
- 7.25 総称数学 <tgmath.h> (p: TBD)
-
- F.10.6.3 nearbyint関数群 (p: TBD)
- C17規格 (ISO/IEC 9899:2018):
-
- 7.12.9.3 nearbyint関数群 (p: TBD)
-
- 7.25 総称型数学 <tgmath.h> (p: TBD)
-
- F.10.6.3 nearbyint関数群 (p: TBD)
- C11規格 (ISO/IEC 9899:2011):
-
- 7.12.9.3 nearbyint関数群 (p: 251-252)
-
- 7.25 総称型数学 <tgmath.h> (p: 373-375)
-
- F.10.6.3 nearbyint関数群 (p: 526)
- C99規格 (ISO/IEC 9899:1999):
-
- 7.12.9.3 nearbyint関数群 (p: 232)
-
- 7.22 総称型数学 <tgmath.h> (p: 335-337)
-
- F.9.6.3 nearbyint関数群 (p: 463)
関連項目
|
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
|
現在の丸めモードを使用して整数に丸め、
結果が異なる場合は例外を発生させる (関数) |
|
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
|
最も近い整数に丸め、中間の場合はゼロから離れる方向に丸める
(関数) |
|
(C99)
(C99)
|
丸め方向を取得または設定する
(関数) |
|
C++ documentation
for
nearbyint
|
|