nearbyint, nearbyintf, nearbyintl
From cppreference.com
| ヘッダー <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以降) |
4) 型汎用マクロ: arg の型が long double の場合、
nearbyintl が呼び出されます。それ以外の場合、arg の型が整数型または double 型の場合、nearbyint が呼び出されます。それ以外の場合は、それぞれ nearbyintf が呼び出されます。目次 |
[編集] パラメータ
| arg | - | floating-point value |
[編集] 戻り値
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 The nearbyint functions (p: TBD)
- 7.25 Type-generic math <tgmath.h> (p: TBD)
- F.10.6.3 The nearbyint functions (p: TBD)
- C17標準 (ISO/IEC 9899:2018)
- 7.12.9.3 The nearbyint functions (p: TBD)
- 7.25 Type-generic math <tgmath.h> (p: TBD)
- F.10.6.3 The nearbyint functions (p: TBD)
- C11標準 (ISO/IEC 9899:2011)
- 7.12.9.3 The nearbyint functions (p: 251-252)
- 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
- F.10.6.3 The nearbyint functions (p: 526)
- C99標準 (ISO/IEC 9899:1999)
- 7.12.9.3 The nearbyint functions (p: 232)
- 7.22 型総称数学関数 <tgmath.h> (p: 335-337)
- F.9.6.3 The nearbyint functions (p: 463)
[編集] 関連項目
| (C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99) |
現在の丸めモードを使用して整数に丸める 結果が異なる場合は例外を送出する (関数) |
| (C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99) |
中間の場合はゼロから離れるように最も近い整数に丸める (関数) |
| (C99)(C99) |
丸め方向を取得または設定する (関数) |
| C++ ドキュメント ( nearbyint )
| |