Вопрос: Есть ли эффективный способ получить число цифр с плавающей запятой?
A: Я сомневаюсь.
Каждый конечный номер FP - точный, но, возможно, это не точная величина, которую вы считаете.
В связи с типичной binary64 реализации double
,
double x = 0.53
, x
значение: .5300000000000000266453525910037569701671600341796875
, 52 цифр.
double x = 0.1
, x
значение: .1000000000000000055511151231257827021181583404541015625
55 цифр.
Следующий ближайший double
к математическому 0.1
is .09999999999999999167332731531132594682276248931884765625
с 56 цифрами.
DBL_MAX
: в десятичной форме, обычно около 300 цифр 17976931348623158...
заканчивается на 6728515625.
.
DBL_MIN
: обычно 0.000000(~300 zeros) 22250738585072014... (maybe about 700 more digits)
.
Сравнение номеров FP не обязательно определяет количество цифр в десятичном представлении. Чтобы сравнить номера FP, используйте обычные операторы связи >, >=, ==
и т. Д.
Эти значения являются иллюстративными. YMMV.
Вы имеете в виду, что у 1.2 есть 2, а у 1.21 есть 3? Где в основном цифры заканчиваются, где начинается 0 или когда точность ударяется? – ydobonebi
Какова длина PI? –
Поскольку '0,1' в коде не является точным математическим числом' 0,1', каково ваше ожидаемое количество цифр? Ваша мысль * * проблематична, что делает вопрос непонятным. –