Maison > Java > javaDidacticiel > Comment puis-je imprimer des doubles en Java avec un formatage précis, en éliminant les zéros inutiles ?

Comment puis-je imprimer des doubles en Java avec un formatage précis, en éliminant les zéros inutiles ?

Barbara Streisand
Libérer: 2024-12-31 13:41:11
original
666 Les gens l'ont consulté

How Can I Print Doubles in Java with Precise Formatting, Eliminating Unnecessary Trailing Zeros?

Impression de nombres flottants avec précision en Java

É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 :

  • 232.00000000
  • 0.18000000000
  • 1237875192 .0
  • 4.5800000000
  • 0.00000000
  • 1.23450000

Le le résultat souhaité serait être :

  • 232
  • 0,18
  • 1237875192
  • 4.58
  • 0
  • 1.2345

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);
}
Copier après la connexion

Explication :

  • Pour les valeurs entières qui peuvent être représentées avec précision en double, le code les convertit en long et les formate en utilisant %d. Cela élimine les zéros de fin inutiles.
  • Pour les valeurs non entières, le code utilise %s pour conserver la valeur double d'origine avec une précision minimale.

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
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal