Étant donné la capacité d'un double 64 bits à représenter des nombres entiers avec précision dans une plage, un défi se pose lors de l'impression de nombres entiers et mixtes valeurs doubles. Bien que String.format("%f") fournisse un formatage proche, il ajoute des zéros inutiles pour les petites valeurs.
À la recherche d'une solution :
L'objectif est d'imprimer valeurs entières stockées sous forme de doubles sans zéros décimaux, tout en conservant une haute précision pour les doubles réels. Par exemple, compte tenu de ces entrées :
Le le résultat souhaité serait être :
Efficace Formatage :
Pour optimiser le formatage, nous pouvons exploiter le fait que les valeurs entières peuvent être représentées précisément sous forme de doubles de 64 bits. L'extrait de code Java suivant y parvient sans recourir à une manipulation de chaîne gourmande en performances :
public static String fmt(double d) { if (d == (long) d) return String.format("%d", (long) d); else return String.format("%s", d); }
Explication :
Résultat :
Lorsqu'elle est appliquée aux exemples d'entrées, la sortie correspond au format souhaité :
232 0.18 1237875192 4.58 0 1.2345
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!