programing

고정 크기 부동 소수점 유형

copysource 2022. 8. 28. 21:12
반응형

고정 크기 부동 소수점 유형

에서stdint.h(C99), boost/cstdint.hppcstdint(C++0x) 헤더가 있습니다.int32_t.

비슷한 크기의 부동 소수점 타입이 있나요?뭐랄까float32_t?

만약 당신이 그 정보를 알고 싶다면floatIEEE 32비트 타입인지 확인합니다.std::numeric_limits<float>::is_iec559함수가 아니라 컴파일 시간 상수입니다

방탄성을 더 높이고 싶다면std::numeric_limits<float>::digitsIEEE 표준 2배 정밀도를 몰래 사용하고 있지 않은지 확인합니다.float24살이어야 합니다.

에 관한 한long double, 보다 중요한 것은,digitsIEEE 형식에는 128비트(표준 = 113) 또는 80비트(표준 = 64)가 있습니다.

그런 식으로 하는 것은 실용적이지 않을 것이다.float32_t이는 일반적으로 부동소수점 하드웨어를 사용하고 소프트웨어 구현에 의존하지 않기 때문입니다.

현재 C 또는 C++ 표준에는 이와 같은 것이 없습니다.사실, 이 모든 게 사실이라는 보장조차 없다.float바이너리 부동소수점 형식이 됩니다.

컴파일러에 따라서는floattype은 IEEE-754 32비트 바이너리 형식이 됩니다.그렇지 않은 사람도 있다.실제로는float실제로는 IEEE-754 입니다.single대부분의 비패키지 플랫폼에서는 를 입력합니다.다만, 일부 컴파일러가 보다 넓은 형식의 식을 평가하는 것에 관한 통상의 경고가 적용됩니다.

IEEE-754의 2008 리비전에 C 언어 바인딩을 추가하는 것을 검토하는 작업 그룹이 있습니다.작업 그룹은 이러한 typedef 추가를 권장하는 것을 검토할 수 있습니다.만약 이것이 C에 추가된다면, C++ 규격이 따를 것이라고 생각합니다.결국.

float32_t나 float64_t와 같은 typedef가 어떤 이유로든 실용적이지 않다고 생각되면 익숙한 OS인 컴파일러에 너무 익숙해져서 작은 둥지 밖을 볼 수 없습니다.

32비트 IEEE 부동소수점 연산을 네이티브로 실행하는 하드웨어와 64비트를 실행하는 하드웨어가 있습니다.이러한 시스템은 서로 통신해야 하는 경우도 있습니다.이 경우 각 플랫폼에서 더블이 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

반응형