fegetround, fesetround

현재 부동 소수점 반올림 모드를 가져오거나 설정합니다.

구문

int fegetround(void);
int fesetround(int round_mode);

매개 변수

round_mode
부동 소수점 반올림 매크로 중 하나로 설정할 반올림 모드입니다. 값이 부동 소수점 반올림 매크로 중 하나와 같지 않으면 반올림 모드가 변경되지 않습니다.

반환 값

성공 시 fegetround 는 반올림 모드를 부동 소수점 반올림 매크로 값 중 하나로 반환합니다. 현재 반올림 모드를 확인할 수 없는 경우 음수 값이 반환됩니다.

성공 시 fesetround 는 0을 반환합니다. 그렇지 않으면 0이 아닌 값이 반환됩니다.

설명

부동 소수점 연산에는 몇 가지 반올림 모드 중 하나를 사용할 수 있습니다. 이러한 모드는 결과가 저장될 때 부동 소수점 작업의 결과가 반올림되는 방향을 제어합니다. 다음은 fenv.h>에 정의된 <부동 소수점 반올림 매크로의 이름과 동작입니다.

매크로 설명
FE_DOWNWARD 음의 무한대로 반올림합니다.
FE_TONEAREST 가장 가까운 값으로 반올림합니다.
FE_TOWARDZERO 0으로 반올림합니다.
FE_UPWARD 양의 무한대로 반올림합니다.

기본 동작 FE_TONEAREST 은 짝수(0) 최적 비트가 가장 가까운 값으로 표현 가능한 값 중간에 결과를 반올림하는 것입니다.

현재 반올림 모드는 다음 작업을 영향을 줍니다.

  • 문자열 변환
  • 상수 식 외부의 부동 소수점 산술 연산자 결과
  • rintnearbyint와 같은 라이브러리 반올림 함수
  • 표준 라이브러리 수학 함수의 값을 반환합니다.

현재 반올림 모드는 다음 작업에 영향을 주지 않습니다.

  • trunc, ceil, floor, 및 lround 라이브러리 함수
  • 항상 0으로 반올림되는 부동 소수점-정수 암시적 캐스팅 및 변환
  • 항상 가장 가까운 값으로 반올림되는 상수 식의 부동 소수점 산술 연산자 결과

이러한 함수를 사용하려면 호출 전에 #pragma fenv_access(on) 지시문을 사용하여 액세스를 방지할 수 있는 부동 소수점 최적화를 꺼야 합니다. 자세한 내용은 fenv_access를 참조하세요.

Important

Windows 10 버전 14393 이전, fenv.h 정의 FE_UPWARD = 0x0100FE_DOWNWARD = 0x0200. Windows 버전 14393에서 이 헤더는 일부 API가 해석 FE_UPWARDFE_DOWNWARD되는 버그를 해결하기 위해 업데이트되었으며 그 반대의 경우도 마찬가지입니다. Windows 버전 14393 FE_UPWARD = 0x0200 부터 이전 FE_DOWNWARD = 0x0100값을 반전합니다. 이전 Windows SDK 버전에 대해 앱을 컴파일한 경우(이 문제는 OS 버전 또는 VS 버전이 아닌 SDK 버전에 따라 다름) 이 문제가 발생할 수 있습니다. Windows 구현의 정의와 FE_DOWNWARD 일치하도록 최신 Windows SDK를 FE_UPWARD 대상으로 앱을 업데이트합니다. 이후 Windows SDK를 대상으로 앱을 업데이트할 수 없는 경우 코드와 0x0100FE_DOWNWARD 마찬가지로 0x0200 정의 FE_UPWARD 할 수 있습니다.

요구 사항

함수 C 헤더 C++ 헤더
fegetround, fesetround <fenv.h> <cfenv>

자세한 내용은 호환성을 참조하세요.

참고 항목

사전순 함수 참조
nearbyint, , nearbyintfnearbyintl
rint, , rintfrintl
lrint, lrintf, lrintl, llrint, llrintfllrintl