函式
<cmath> <ctgmath>

nearbyint

     double nearbyint  (double x);      float nearbyintf (float x);long double nearbyintl (long double x);
     double nearbyint (double x);      float nearbyint (float x);long double nearbyint (long double x);     double nearbyint (T x);           // additional overloads for integral types
四捨五入到最接近的整數值
根據 fegetround 指定的舍入方向將 x 舍入到整數。

此函式不會引發 FE_INEXACT 異常。有關可能引發此異常的等效函式,請參閱 rint

標頭檔案 <tgmath.h> 提供了此函式的型別通用宏版本。
在此標頭檔案中(<cmath>)為 整數型別提供了其他過載:這些過載在計算之前有效地將 x 強制轉換為 double(為 T 是任何整數型別定義)。

引數

x
要取整的值。

返回值

舍入到最接近整數(作為浮點值)的 x 的值。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* nearbyint example */
#include <stdio.h>      /* printf */
#include <fenv.h>       /* fegetround, FE_* */
#include <math.h>       /* nearbyint */

int main ()
{
  printf ("rounding using ");
  switch (fegetround()) {
    case FE_DOWNWARD: printf ("downward"); break;
    case FE_TONEAREST: printf ("to-nearest"); break;
    case FE_TOWARDZERO: printf ("toward-zero"); break;
    case FE_UPWARD: printf ("upward"); break;
    default: printf ("unknown");
  }
  printf (" rounding:\n");

  printf ( "nearbyint (2.3) = %.1f\n", nearbyint(2.3) );
  printf ( "nearbyint (3.8) = %.1f\n", nearbyint(3.8) );
  printf ( "nearbyint (-2.3) = %.1f\n", nearbyint(-2.3) );
  printf ( "nearbyint (-3.8) = %.1f\n", nearbyint(-3.8) );
  return 0;
}

可能的輸出

Rounding using to-nearest rounding:
nearbyint (2.3) = 2.0
nearbyint (3.8) = 4.0
nearbyint (-2.3) = -2.0
nearbyint (-3.8) = -4.0


另見