【发布时间】:2022-03-25 19:02:06
【问题描述】:
我希望将低于 1.0 的最接近的数字作为浮点数。通过阅读维基百科关于IEEE-754 的文章,我发现1.0 的二进制表示是3FF0000000000000,所以最接近的双精度值实际上是0x3FEFFFFFFFFFFFFF。
我知道用这个二进制数据初始化双精度的唯一方法是:
double a;
*((unsigned*)(&a) + 1) = 0x3FEFFFFF;
*((unsigned*)(&a) + 0) = 0xFFFFFFFF;
使用起来比较麻烦。
如果可能的话,有没有更好的方法来定义这个双数?
【问题讨论】:
-
唯一的方法是……除非你的 C++ 实现支持 64 位整数。
-
这只是吹毛求疵,但它是 IEEE-754-1985(不是 IEEE-745)。
标签: c++ floating-point floating-accuracy ieee-754 notation