Namespaces
Variants

fegetround, fesetround

From cppreference.net
< c ‎ | numeric ‎ | fenv
헤더 파일에 정의됨 <fenv.h>
int fesetround ( int round ) ;
(1) (C99부터)
int fegetround ( ) ;
(2) (C99부터)

1) 부동 소수점 반올림 방향을 인수 round 와 동일하게 설정하려고 시도합니다. 이 인수는 부동 소수점 반올림 매크로 중 하나일 것으로 예상됩니다.

2) 현재 반올림 방향에 해당하는 floating-point rounding macro 값을 반환합니다.

목차

매개변수

round - 반올림 방향, 부동 소수점 반올림 매크로 중 하나

반환값

1) 0 성공 시 0, 그렇지 않으면 0이 아닌 값.

2) 현재 반올림 방향을 설명하는 부동 소수점 반올림 매크로 또는 방향을 결정할 수 없는 경우 음수 값.

참고 사항

현재 반올림 모드는 가장 최근의 fesetround 호출의 영향을 반영하며, FLT_ROUNDS 를 사용하여 조회할 수도 있습니다.

예제

#include <fenv.h>
#include <math.h>
#include <stdio.h>
// #pragma STDC FENV_ACCESS ON
void show_fe_current_rounding_direction(void)
{
    printf("current rounding direction:  ");
    switch (fegetround())
    {
           case FE_TONEAREST:  printf ("FE_TONEAREST");  break;
           case FE_DOWNWARD:   printf ("FE_DOWNWARD");   break;
           case FE_UPWARD:     printf ("FE_UPWARD");     break;
           case FE_TOWARDZERO: printf ("FE_TOWARDZERO"); break;
           default:            printf ("unknown");
    };
    printf("\n");
}
int main(void)
{
    /* 기본 반올림 방향 */
    show_fe_current_rounding_direction();
    printf("+11.5 -> %+4.1f\n", rint(+11.5)); /* 두 정수 사이의 중간값 */
    printf("+12.5 -> %+4.1f\n", rint(+12.5)); /* 두 정수 사이의 중간값 */
    /* 현재 반올림 방향 저장 */
    int curr_direction = fegetround();
    /* 현재 반올림 방향 임시 변경 */
    fesetround(FE_DOWNWARD);
    show_fe_current_rounding_direction();
    printf("+11.5 -> %+4.1f\n", rint(+11.5));
    printf("+12.5 -> %+4.1f\n", rint(+12.5));
    /* 기본 반올림 방향 복원 */
    fesetround(curr_direction);
    show_fe_current_rounding_direction();
    return 0;
}

가능한 출력:

current rounding direction:  FE_TONEAREST
+11.5 -> +12.0
+12.5 -> +12.0
current rounding direction:  FE_DOWNWARD
+11.5 -> +11.0
+12.5 -> +12.0
current rounding direction:  FE_TONEAREST

참고문헌

  • C23 표준 (ISO/IEC 9899:2024):
  • 7.6.3.1 fegetround 함수 (p: TBD)
  • 7.6.3.2 fesetround 함수 (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.6.3.1 fegetround 함수 (p: TBD)
  • 7.6.3.2 fesetround 함수 (p: TBD)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.6.3.1 fegetround 함수 (p: 212)
  • 7.6.3.2 fesetround 함수 (p: 212-213)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.6.3.1 fegetround 함수 (p: 193)
  • 7.6.3.2 fesetround 함수 (p: 193-194)

참고 항목

현재 반올림 모드를 사용하여 정수로 반올림
(함수)
(C99) (C99) (C99) (C99) (C99) (C99) (C99) (C99) (C99)
현재 반올림 모드를 사용하여 정수로 반올림하며,
결과가 다를 경우 예외 발생
(함수)
C++ documentation for fegetround , fesetround