关于std :: numeric_limits <double> :: digits10 </double>的误解

时间:2012-10-29 10:44:47

标签: c++ floating-point

  

可能重复:
  What is the meaning of numeric_limits<double>::digits10

根据我的理解(关于我通过互联网旅行的内容)似乎std::numeric_limits<double>::digits10double等于15)代表数字{{1} }可以处理,例如1.23456789012345但不能处理1.234567890123456

另一方面,双精度浮点格式范围将持续到double,这似乎代表了一个不仅仅保持15位数的数字......

不连贯在哪里?

3 个答案:

答案 0 :(得分:4)

  

... std::numeric_limits<double>::digits10double等于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,可以表示。