双精度的有效十进制数

Significant decimal digits of double?

本文关键字:十进制数 有效 双精度      更新时间:2023-10-16

C/c++ -Standard对double的最小有效十进制位数有什么保证?

c++标准实际上在§18.3.2.4/10的脚注中说,这相当于C标准中定义的DBL_DIG。但是我在C标准中找不到关于最小值的任何内容。

那么,下列其中一个的最小值是多少?

  • std::numeric_limits<double>::digits10
  • DBL_MANT_DIG编辑:No, DBL_DIG

您不会在c++标准中找到它,因为c++在这一点上遵循C标准。对于十进制数字,最小值为:

FLT_DIG   6
DBL_DIG  10
LDBL_DIG 10

因此,float为6位,doublelong double为10位。(这是保证从文本到类型再转换得到相同值的位数。)

注意,DBL_MANT_DIG对应的是进制的位数,因此通常是二进制的位数,而不是十进制的位数。