Compter le nombre de chiffres d’un nombre à virgule flottante

Existe-t-il un moyen efficace (sans convertir le float en chaîne) d’obtenir le nombre de chiffres composant un nombre à virgule flottante (indépendamment de sa longueur et de sa précision)?


De cette manière, je peux implémenter une fonction de comparaison / conditionnement sans problème, portable et sans problème, en multipliant le nombre float par le nombre de chiffres qui le composent.

Q: Existe-t-il un moyen efficace d’obtenir le nombre de chiffres d’un nombre à virgule flottante?
A: j’en doute.

Chaque nombre fini de PC est exact , mais peut-être pas la valeur exacte à laquelle on pense.

En raison de l’implémentation binary64 typique d’un double ,
double x = 0.53 , valeur x : .5300000000000000266453525910037569701671600341796875 , 52 chiffres.
double x = 0.1 , valeur x : .1000000000000000055511151231257827021181583404541015625 55 chiffres.
Le double plus proche de 0.1 mathématique est .09999999999999999167332731531132594682276248931884765625 avec 56 chiffres.

DBL_MAX : en décimal, généralement environ 300 chiffres 17976931348623158... finissant par 6728515625. ..

DBL_MIN : généralement 0.000000(~300 zeros) 22250738585072014... (maybe about 700 more digits) .

La comparaison des nombres de PF n’a pas à déterminer le nombre de chiffres dans sa représentation décimale. Pour comparer les nombres FP, utilisez les opérateurs de relation habituels >, >=, == , etc.

Ces valeurs sont illustratives. YMMV.