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) 최적 비트가 가장 가까운 값으로 표현 가능한 값 중간에 결과를 반올림하는 것입니다.
현재 반올림 모드는 다음 작업을 영향을 줍니다.
- 문자열 변환
- 상수 식 외부의 부동 소수점 산술 연산자 결과
rint
및nearbyint
와 같은 라이브러리 반올림 함수- 표준 라이브러리 수학 함수의 값을 반환합니다.
현재 반올림 모드는 다음 작업에 영향을 주지 않습니다.
trunc
,ceil
,floor
, 및lround
라이브러리 함수- 항상 0으로 반올림되는 부동 소수점-정수 암시적 캐스팅 및 변환
- 항상 가장 가까운 값으로 반올림되는 상수 식의 부동 소수점 산술 연산자 결과
이러한 함수를 사용하려면 호출 전에 #pragma fenv_access(on)
지시문을 사용하여 액세스를 방지할 수 있는 부동 소수점 최적화를 꺼야 합니다. 자세한 내용은 fenv_access
를 참조하세요.
Important
Windows 10 버전 14393 이전, fenv.h
정의 FE_UPWARD = 0x0100
및 FE_DOWNWARD = 0x0200
. Windows 버전 14393에서 이 헤더는 일부 API가 해석 FE_UPWARD
FE_DOWNWARD
되는 버그를 해결하기 위해 업데이트되었으며 그 반대의 경우도 마찬가지입니다. Windows 버전 14393 FE_UPWARD = 0x0200
부터 이전 FE_DOWNWARD = 0x0100
값을 반전합니다.
이전 Windows SDK 버전에 대해 앱을 컴파일한 경우(이 문제는 OS 버전 또는 VS 버전이 아닌 SDK 버전에 따라 다름) 이 문제가 발생할 수 있습니다. Windows 구현의 정의와 FE_DOWNWARD
일치하도록 최신 Windows SDK를 FE_UPWARD
대상으로 앱을 업데이트합니다. 이후 Windows SDK를 대상으로 앱을 업데이트할 수 없는 경우 코드와 0x0100
FE_DOWNWARD
마찬가지로 0x0200
정의 FE_UPWARD
할 수 있습니다.
요구 사항
함수 | C 헤더 | C++ 헤더 |
---|---|---|
fegetround , fesetround |
<fenv.h> |
<cfenv> |
자세한 내용은 호환성을 참조하세요.
참고 항목
사전순 함수 참조
nearbyint
, , nearbyintf
nearbyintl
rint
, , rintf
rintl
lrint
, lrintf
, lrintl
, llrint
, llrintf
llrintl