2

可能重复:
numeric_limits<double>::digits10 的含义是什么

根据我的理解(关于我在互联网上骑的东西)似乎std::numeric_limits<double>::digits10double等于15)代表可以处理的位数double,例如 1.23456789012345 但不是 1.234567890123456

另一方面,双精度浮点格式范围将一直持续到1.8*10^+308,这似乎代表了一个数字,它不仅仅包含 15 位数字......

哪里不连贯?

4

3 回答 3

4

... std::numeric_limits<double>::digits10double等于 15)表示 double 可以处理的位数...

更准确地说,它是它可以在不损失精度的情况下存储的有效位数。

Python 中的示例:

1e15 == 1e15 + 1
False 

1e16 == 1e16 + 1
True # loss of precision
于 2012-10-29T10:47:21.543 回答
1

一个是有效数字。另一个是可表示的数字范围。因此,您可以拥有:

1.23456789012345*10^308

但不是

1.234567890123456*10^308

它显示了有效数字15和可以表示的范围。 10^308

于 2012-10-29T10:49:39.493 回答
1

std::numeric_limits::digits10:无需更改即可表示的位数(以十进制为基数)。

于 2012-10-29T10:47:45.260 回答