C ++标准保证我们只能安全地往返十进制值
对于double
值std::numeric_limits<double>::digits10
。
阅读此post之后,我想知道对于整数值这个阈值是否延伸到std::numeric_limits<double>::digits10
+ 1
答案 0 :(得分:3)
std :: numeric_limits :: digits10为15,因为只保证15位或更少的值从十进制到双精度并返回。一些16位数值将往返,但不是全部。在整数的情况下,仅保证那些&lt; = 2 ^ 53 = 9007199254740992往返(因为它们被精确表示)。例如,9007199254740993以9007199254740992的形式返回。