c++ - 使用 IEEE 754 浮点 double 据类型安全往返整数值

标签 c++ floating-point

C++ 标准保证我们只能安全地往返十进制值最多 对于 doublestd::numeric_limits<double>::digits10 . 看完这篇post ,我想知道对于整数值,这个阈值是否扩展到 std::numeric_limits<double>::digits10 +1

最佳答案

std::numeric_limits::digits10 为 15,因为只有 15 位数或更少的值才能保证从十进制到 double 并返回。一些 16 位数的值会往返,但不是全部。在整数的情况下,只有那些 <= 2^53 = 9007199254740992 才能保证往返(因为它们被准确表示)。例如,9007199254740993 返回为 9007199254740992。

关于c++ - 使用 IEEE 754 浮点 double 据类型安全往返整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21182411/

相关文章:

c++ - c++ 中的 float a = -a 和 a *= -1 之间有区别吗?

floating-point - 最小 float 怎么可能是 2^(-126) ,而不是 2^(-128)

c - float 如何存储在内存中?

c++ - 正确的方法返回STL容器

c++ - 绘制彼此靠近的对象

c++ - memset() 没有按预期工作

javascript - 限制javascript中小数点后显示的数字数量

math - float 学有问题吗?

c++ - 在 C++ 中使用 fstream 在文件中查找字符串

c++ - DirectX11 - 带流输出的几何着色器