developer tip

고정 크기 부동 소수점 유형

copycodes 2020. 10. 8. 08:08
반응형

고정 크기 부동 소수점 유형


에서 stdint.h(C99), 부스트 / cstdint.hpp , 및 cstdint(C + +0)가 헤더, 다른 사람의 사이에서, 유형 int32_t.

비슷한 고정 크기 부동 소수점 유형이 있습니까? 같은 거 float32_t?


현재 C 또는 C ++ 표준에는 이와 같은 것이 없습니다. 사실, float이진 부동 소수점 형식이 될 것이라는 보장조차 없습니다 .

일부 컴파일러는 float유형이 IEEE-754 32 비트 이진 형식 임을 보장 합니다. 일부는 그렇지 않습니다. 실제로, float실제로 IEEE-754 인 single에 유형 가장 넓은 형식으로 식을 평가하는 어떤 컴파일러에 대한 일반적인주의 사항이 적용하지만, 비 임베디드 플랫폼.

2008 년 개정 된 IEEE-754에 대한 C 언어 바인딩 추가를 논의하는 작업 그룹이 있으며, 이러한 typedef 추가를 권장 할 수 있습니다. 이것이 C에 추가되면 C ++ 표준이 결국 따라 올 것이라고 예상합니다.


당신이 당신의 여부를 알고 싶은 경우 float는 IEEE 32 비트 형식입니다 확인 std::numeric_limits<float>::is_iec559. 함수가 아니라 컴파일 타임 상수입니다.

더 방탄하고 싶다면 std::numeric_limits<float>::digits.NET 용 IEEE 표준 배정 밀도를 몰래 사용하고 있지 않은지 확인하십시오 float. 24이어야합니다.

이에 올 때 long double, 그것을 확인하는 것이 더 중요하다 digits128 비트 (숫자 = 113) 또는 80 비트 (숫자 = 64) : 합리적이 될 수있는 몇 IEEE 형식이 있기 때문에.

float32_t일반적으로 사용 가능한 경우 부동 소수점 하드웨어를 사용하고 소프트웨어 구현으로 대체하지 않기를 원하기 때문에 그렇게 하는 것은 실용적이지 않습니다.


어떤 이유로 든 float32_t 및 float64_t와 같은 typedef를 사용하는 것이 비현실적이라고 생각한다면 익숙한 OS, 컴파일러에 너무 익숙해서 작은 둥지 밖을 볼 수 없습니다.

기본적으로 32 비트 IEEE 부동 소수점 연산을 실행하는 하드웨어와 64 비트를 실행하는 다른 하드웨어가 있습니다. 때로는 그러한 시스템이 서로 통신해야하는 경우도 있습니다.이 경우 각 플랫폼에서 double이 32 비트인지 64 비트인지 아는 것이 매우 중요합니다. 32 비트 플랫폼이 다른 64 비트 값을 기반으로 과도한 계산을 수행하는 경우 타이밍 및 속도 요구 사항에 따라 더 낮은 정밀도로 캐스팅하는 것이 좋습니다.

나는 내 플랫폼에 얼마나 많은 비트가 있는지 정확히 알지 못하면 수레와 복식을 사용하는 것이 개인적으로 불편합니다. 일부 통신 채널을 통해 다른 플랫폼으로 전송하려면 더욱 그렇습니다.


현재 다음 유형을 언어에 추가하는 제안이 있습니다.

decimal32
decimal64
decimal128

언젠가를 통해 액세스 할 수 있습니다 #include <decimal>.

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3871.html

참고 URL : https://stackoverflow.com/questions/2524737/fixed-size-floating-point-types

반응형