名前空間
変種
操作

nearbyint, nearbyintf, nearbyintl

提供: cppreference.com
< c‎ | numeric‎ | math
 
 
 
一般的な数学関数
関数
基本操作
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)(C99)(C99)
指数関数
(C99)
(C99)
(C99)
(C99)
冪関数
(C99)
(C99)
三角関数と双曲線関数
(C99)
(C99)
(C99)
誤差関数とガンマ関数
(C99)
(C99)
(C99)
(C99)
最も近い整数
(C99)(C99)(C99)
(C99)
nearbyint
(C99)
(C99)(C99)(C99)
浮動小数点操作関数
(C99)(C99)
(C99)
(C99)
分類
(C99)
(C99)
(C99)
(C99)(C99)
マクロ定数
 
ヘッダ <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およびそれ以降)
1-3) 現在の丸めモードを使用して、浮動小数点引数 arg を浮動小数点形式の整数値に丸めます。
4) 型総称マクロ。 arglong double 型の場合は nearbyintl が呼ばれます。 そうでなく、 arg が整数型または double 型の場合は nearbyint が呼ばれます。 そうでなければ nearbyintf が呼ばれます。

目次

[編集] 引数

arg - 浮動小数点値

[編集] 戻り値

現在の丸めモードに従った、 arg に最も近い整数が返されます。

[編集] エラー処理

この関数は math_errhandling で規定されているいかなるエラーの対象でもありません。

処理系が IEEE 浮動小数点算術 (IEC 60559) をサポートしている場合、

  • FE_INEXACT が発生することはありません。
  • arg が ±∞ であれば、それが変更せずに返されます。
  • arg が ±0 であれば、それが変更せずに返されます。
  • arg が NaN であれば、 NaN が返されます。

[編集] ノート

nearbyintrint の唯一の違いは、 nearbyintFE_INEXACT を発生させないことです。

すべての標準の浮動小数点フォーマットにおいて、最も大きな表現可能な浮動小数点値は正確な整数であるため、 nearbyint それ自体はオーバーフローすることはありません。 しかし任意の整数型 (intmax_t も含みます) は、整数変数に格納するとき、結果がオーバーフローするかもしれません。

現在の丸めモードが FE_TONEAREST の場合、この関数は (rint と同様に、しかし round とは異なり)、中間の場合、偶数に丸めます。

[編集]

#include <stdio.h>
#include <math.h>
#include <fenv.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

[編集] 参考文献

  • C11 standard (ISO/IEC 9899:2011):
  • 7.12.9.3 The nearbyint functions (p: 251-252)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • F.10.6.3 The nearbyint functions (p: 526)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.12.9.3 The nearbyint functions (p: 232)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • F.9.6.3 The nearbyint functions (p: 463)

[編集] 関連項目

(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)
現在の丸めモードを使用して整数に丸めますが、結果が異なる場合は例外を発生します
(関数) [edit]
(C99)(C99)(C99)
最も近い整数に丸めます。 ちょうど中央の場合はゼロから遠ざかる方向に丸めます
(関数) [edit]
丸め方向を取得または設定します
(関数) [edit]
nearbyintC++リファレンス