11.8.1.1 : Conversion décimal-binaire et binaire-décimal
Tout nombre binaire à virgule peut obtenir une représentation décimale exacte (avec un nombre fini de chiffres). Ce n'est pas le cas en sens inverse, l'exemple archétypique étantD'une manière plus surprenante, alors que tout nombre binaire a l'assurance d'avoir une expression unique et finie en décimal, ce n'est pas cette valeur qui apparaît à l'écran dans un printf. Cette traduction fidèle requerrait plus de chiffres que la précision dans laquelle le nombre flottant est stocké, et donc serait inepte. Aussi cherche-t-on le nombre décimal dont l'expression est la plus courte et qui soit situé à moins d'une demie ulp du nombre binaire. Cette minimisation conduit à de nombreuses comparaisons et à des calculs en précision supérieure à la précision cible de la routine. Là encore, les auteurs originaux ont eu une approche plus pragmatique notevoir https://www.exploringbinary.com/quick-and-dirty-floating-point-to-decimal-conversion/.
Depuis trente ans, on trouve cependant des routines qui procèdent à ces conversions avec un arrondi correct~[221]Correctly Rounded Binary-Decimal and Decimal-Binary Conversions, 1990, Gay, David M. notearticle en ligne https://ampl.com/REFS/rounding.pdf et source disponible sur http://www.netlib.org/fp/. De nouveaux algorithmes plus rapides sont même apparus~[222]Printing Floating-point Numbers Quickly and Accurately with Integers, 2010, Loitsch, Florian. Mais sont-ils disponibles dans nos compilateurs, et nos systèmes~?