Подсчитайте количество цифр числа с плавающей запятой

Есть ли эффективный способ (без преобразования float в строку), чтобы получить число цифр, число с плавающей запятой состоит (независимо от его длины и точности)?


На этом пути я могу реализовать довольно хорошую, переносимую, проблемную функцию для сравнения / кондиционирования, умножая поплавок на количество цифр, из которых он состоит.

В: Есть ли эффективный способ получить число цифр числа с плавающей запятой?
A: Я в этом сомневаюсь.

Каждое конечное число FP является точным , но, возможно, не точным значением, которое думает.

Из-за типичной реализации двоичного кода double ,
double x = 0.53 , x значение: .5300000000000000266453525910037569701671600341796875 , 52 цифры.
double x = 0.1 , x значение: .1000000000000000055511151231257827021181583404541015625 55 цифр.
Следующий ближайший double к математическому 0.1 .09999999999999999167332731531132594682276248931884765625 с 56 цифрами.

DBL_MAX : в десятичной DBL_MAX , обычно около 300 цифр 17976931348623158... заканчивается на 6728515625. ..

DBL_MIN : обычно 0.000000(~300 zeros) 22250738585072014... (maybe about 700 more digits) .

Сравнение чисел FP не должно определять количество дигита в его десятичном представлении. Чтобы сравнить номера FP, используйте обычные операторы отношений >, >=, == и т. Д.

Эти значения являются иллюстративными. YMMV.