Namespaces
Variants

nearbyint, nearbyintf, nearbyintl

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
Trigonometric and hyperbolic functions
Nearest integer floating-point
nearbyint
(C99)
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
헤더 파일에 정의됨 <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 - 부동소수점 값

반환값

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)
가장 가까운 정수로 반올림하며, 중간값일 경우 0에서 멀어지는 방향으로 반올림
(함수)
반올림 방향을 얻거나 설정
(함수)
C++ documentation for nearbyint