code

정수 부동 소수점 자체가 1.f로 보장됩니까?

codestyles 2020. 10. 24. 10:17
반응형

정수 부동 소수점 자체가 1.f로 보장됩니까?


내가 쓰면 :

int x = /* any non-zero integer value */;
float y = x;
float z = y / y;

z정확히 1.f 보장됩니까?


C ++ 구현이 IEEE754를 사용하는 경우 예, 이는 보장됩니다. (나눗셈 연산자는 가능한 최상의 부동 소수점 값을 반환하는 데 필요합니다.)

유일한 예외 y / y일반적으로없는, 1f때 경우가 y있다 NaN, +Inf, -Inf, 0f, 그리고 -0f당신이 플랫폼에있는 경우, 또는 어디에 int너무 넓은 그것의 특정 인스턴스가 표현 될 수 없다는 float것을하지 않고 float있는로 설정 +Inf또는 -Inf1 . 최종 포인트를 제쳐두고, 귀하의 경우 int x = 0;유일한 예외를 생성 한다는 것을 의미합니다 .

IEEE754는 매우 일반적입니다. 그러나 확실하게 확인하려면

std::numeric_limits<float>::is_iec559;

1 예를 들어 128 비트 int및 IEEE754 32 비트를 사용 하는 플랫폼 float은의 특정 값에 대해이 동작을 나타냅니다 x.


아니요, IEEE754의 경우에도 모든 경우가 아닙니다.

예를 들어를 사용 int x = 0;하면 NaN을 얻을 수 있습니다. ( 라이브 )

참고 URL : https://stackoverflow.com/questions/44846512/is-a-whole-number-float-divided-by-itself-guaranteed-to-be-1-f

반응형