名前空間
変種
操作

nearbyint, nearbyintf, nearbyintl

From cppreference.com
< c‎ | numeric‎ | math
 
 
 
共通の数学関数
関数
基本的な数学関数
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大/最小演算
(C99)
(C99)
指数関数
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
べき乗関数
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
三角関数と双曲線関数
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
最も近い整数浮動小数点数
(C99)(C99)(C99)
(C99)

nearbyint
(C99)
(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮動小数点操作
(C99)(C99)
(C99)(C23)
(C99)
縮小演算
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量子および量子指数
Decimal再エンコーディング関数
総順序およびペイロード関数
分類
(C99)
(C99)
(C99)
(C23)
誤差関数とガンマ関数
(C99)
(C99)
(C99)
(C99)
マクロ定数
特殊な浮動小数点値
(C99)(C23)
引数と戻り値
エラーハンドリング
高速演算インジケータ
 
ヘッダー <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) 型汎用マクロ: 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 が返されます。

[編集] 注記

nearbyintrint の唯一の違いは、nearbyintFE_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)
中間の場合はゼロから離れるように最も近い整数に丸める
(関数) [編集]
丸め方向を取得または設定する
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)