可能重复:
What is the meaning of numeric_limits<double>::digits10
根据我的理解(关于我通过互联网旅行的内容)似乎std::numeric_limits<double>::digits10
(double
等于15
)代表数字{{1} }可以处理,例如1.23456789012345但不能处理1.234567890123456
另一方面,双精度浮点格式范围将持续到double
,这似乎代表了一个不仅仅保持15位数的数字......
不连贯在哪里?
答案 0 :(得分:4)
...
std::numeric_limits<double>::digits10
(double
等于15)表示双人可以处理的数字位数...
更确切地说,它可以存储without loss of precision的有效位数。
Python中的示例:
1e15 == 1e15 + 1
False
1e16 == 1e16 + 1
True # loss of precision
答案 1 :(得分:1)
std::numeric_limits::digits10:无需更改即可表示的位数(以十进制为基数)。
答案 2 :(得分:1)
一个是重要的位数。另一个是可表示数字的范围。所以,你可以:
1.23456789012345*10^308
但不是
1.234567890123456*10^308
显示重要位数15
和范围 10^308
,可以表示。