使用IEEE 754浮点双精度数据类型安全地往返整数值

时间:2014-01-17 09:35:32

标签: c++ floating-point

C ++标准保证我们只能安全地往返十进制值 对于doublestd::numeric_limits<double>::digits10。 阅读此post之后,我想知道对于整数值这个阈值是否延伸到std::numeric_limits<double>::digits10 + 1

1 个答案:

答案 0 :(得分:3)

std :: numeric_limits :: digits10为15,因为只保证15位或更少的值从十进制到双精度并返回。一些16位数值将往返,但不是全部。在整数的情况下,仅保证那些&lt; = 2 ^ 53 = 9007199254740992往返(因为它们被精确表示)。例如,9007199254740993以9007199254740992的形式返回。