Из моего предыдущего вопроса "Is floating point precision mutable or invariant?" Я получил response, который сказал,У плавающих, парных и длинных парных разрядов гарантированная минимальная точность?
C обеспечивает DBL_DIG, DBL_DECIMAL_DIG и их поплавка и длинные двойные аналоги. DBL_DIG указывает минимальную относительную десятичную точность . DBL_DECIMAL_DIG можно рассматривать как максимальную относительную точность .
Я посмотрел эти макросы вверх. Они находятся в заголовке <cfloat>
. Из cplusplus reference page перечислены макросы для float
, double
и long double
.
Вот макросы для минимальных значений точности.
FLT_DIG 6 or greater
DBL_DIG 10 or greater
LDBL_DIG 10 or greater
Если бы я взял эти макросы по номинальной стоимости, я бы предположить, что float
имеет минимальный десятичную точность 6, в то время как double
и long double
имеют минимальную десятичную точность 10. Однако, будучи большим мальчиком, я знаю, что некоторые вещи могут быть слишком хорошими, чтобы быть правдой.
Поэтому я хотел бы знать. Имеют ли плавающие, удвоенные и длинные удвоения гарантированную минимальную десятичную точность, и является ли эта минимальная десятичная точность значениями макросов, приведенными выше?
Если нет, то почему?
Примечание: Предположим, что мы используем язык программирования C++.
Что означает «десятичная точность»? – tmyklebu
@tmyklebu ссылается на первую ссылку в вопросе выше. – Bryan
Я также не могу понять смысл вашей первой ссылки. В каком заявлении вы хотите включить FLT_DIG? Кроме того, вы знаете, что это, как правило, форматы radix-2, а не radix-10, верно? – tmyklebu