从我之前的问题“浮点数精度是可变还是不变?”中,我收到了一个回答,其中说道:
C提供了DBL_DIG、DBL_DECIMAL_DIG以及它们的float和long double对应项。DBL_DIG表示最小相对十进制精度。DBL_DECIMAL_DIG可以被视为最大相对十进制精度。
我查找了这些宏。它们在头文件
下面是最小精度值的宏:
因此,我想知道,
如果不是,是什么原因?
注意:假设我们正在使用编程语言C ++。
C提供了DBL_DIG、DBL_DECIMAL_DIG以及它们的float和long double对应项。DBL_DIG表示最小相对十进制精度。DBL_DECIMAL_DIG可以被视为最大相对十进制精度。
我查找了这些宏。它们在头文件
<cfloat>
中找到。从cplusplus reference page上,它们列出了float
、double
和long double
的宏。下面是最小精度值的宏:
FLT_DIG 6或更高
DBL_DIG 10或更高
LDBL_DIG 10或更高
如果我只看宏定义的话,我会认为float
具有至少6位小数精度,而double
和long double
则具有至少10位小数精度。然而,作为一个成年人,我知道有些事情可能过于美好而不切实际。因此,我想知道,
float
、double
和long double
是否具有保证的最小十进制精度,而这个最小十进制精度是否是上述宏定义的值?如果不是,是什么原因?
注意:假设我们正在使用编程语言C ++。