c++ - 查找float类型的内存格式

标签 c++ floating-point

如何找到floatdouble类型的内存格式?

我指的是符号、指数和分数的位数。

最佳答案

I mean the numbers of bits for sign, exponent, and fraction.

您可以使用 std::numeric_limits<T>::digits获得尾数位,std::numeric_limits<T>::is_signed获取符号位。

你并从sizeof(T)*CHAR_BIT中扣除他们的总和猜测指数数字,但如果类型有填充,这可能不正确。这是典型的 long double例如。

Find float type's memory format

当然,重要的不仅是位数,还有顺序。这些功能对您没有帮助。他们还假设 std::numeric_limits<T>::radix == 2 .

对于确切的格式,您必须查阅 cpu 架构手册。


I want to save floating point numbers to hard disk and wonder if there is a good way to make the file cross platform.

最典型的解决方案是在保存到磁盘时将 float 转换为文本表示形式:0x1.8p+0 .它不是最有效的,但它是可移植的(尽管您必须决定文件将使用什么字符编码,如果这不是系统 native 的,则需要进行转换)。

关于c++ - 查找float类型的内存格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42583753/

相关文章:

c++ - 指针是否可能指向地址 0x000000

c++11数组传递给函数错误

c++ - CMake 与 Poky 交叉编译

java - 双重计算产生奇数结果

java - 为什么 HashSet 区分 0.0 和 -0.0

c++ - 无法在 C++ 中从 main 实例化另一个类

c++ - 多个工作进程调用 HttpReceiveHttpRequest

c - 如何在C中自动缩放浮点值?

python - 如何对浮点输出执行单元测试? - Python

PHP如何将数字指数转换为字符串?