双倍的重要十进制数字?

时间:2013-01-08 23:22:50

标签: c++ c floating-point language-lawyer

C / C ++ - 标准保证double的最小有效小数位是什么?

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

那么,下列之一的最小值是多少?

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

1 个答案:

答案 0 :(得分:12)

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

FLT_DIG   6
DBL_DIG  10
LDBL_DIG 10

因此,float为6位,doublelong double为10位。 (这是保证从文本到类型和返回的转换将产生相同值的位数。)

请注意,DBL_MANT_DIG对应于基数中的位数,因此通常是二进制数字的数量,而不是小数位数。