12

C/C++ 标准对 a 的最小有效十进制数字有什么保证double

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

那么,以下其中一项的最小值是多少?

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

1 回答 1

12

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

FLT_DIG   6
DBL_DIG  10
LDBL_DIG 10

所以,6 位代表float, 10 位代表doublelong double。(这是保证从文本到类型的转换并返回将产生相同值的位数。)

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

于 2013-01-08T23:32:38.220 回答