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
622 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!

source:php.cn
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