C / C ++ - 标准保证double
的最小有效小数位是什么?
C ++标准实际上在§18.3.2.4/10的脚注中说,这相当于C标准中定义的DBL_DIG
。但是我找不到关于C标准中最小值的任何信息。
那么,下列之一的最小值是多少?
std::numeric_limits<double>::digits10
DBL_MANT_DIG
编辑:不,DBL_DIG
答案 0 :(得分:12)
你不会在C ++标准中找到它,因为C ++在这个标准上遵循C标准。对于十进制数字,最小值为:
FLT_DIG 6
DBL_DIG 10
LDBL_DIG 10
因此,float
为6位,double
和long double
为10位。 (这是保证从文本到类型和返回的转换将产生相同值的位数。)
请注意,DBL_MANT_DIG
对应于基数中的位数,因此通常是二进制数字的数量,而不是小数位数。