7
votes

Supprimer le .0 d'un double

J'essaie d'afficher des chiffres dans une chaîne de manière dynamique, de sorte que si le nombre a la décimale les affiche, mais si ce n'est pas le cas, sinuez la 0.0

Exemple: affichez 5,5 comme 5,5 et 5,0 comme 5 < p> C'est ce que j'ai jusqu'à présent: (la réponse est une double) xxx

Ce travail est l'amende jusqu'à environ 1E18, puis une erreur d'une taille maximale d'un long . Alors, comment allais-je atteindre cela sur des nombres plus gros comme 5.43e86


3 commentaires

Pourquoi n'utilisez-vous pas décimalformat?


Dupliqué possible de Comment bien formater des types flottants à la chaîne?


@Ejp math.floor () renvoie également un double, donc .0 restera.


4 Réponses :


27
votes

Utilisez décimalformat xxx


5 commentaires

Je pense que vous voulez dire nouveau décimalformat ("###"); parce qu'il ne veut pas voir les chiffres après la décimale.


Merci! J'utilise Devimalformat ailleurs dans mon application. Aurait dû être pensé à cela. très bonne réponse.


@Alexr - qui imprimera 5 (au lieu de 5.0) et 5.5 si la réponse = 5.5.


-1, # est "chiffre, zéro montre comme absent", qui imprimera toujours le 0 après la décimale. Pas ce qu'il demande


@Greg - je vous suggère d'essayer le code ci-dessus. Cela fait exactement ce que demande l'OP.



-3
votes

regarder http://download.oracle.com/javase/6 /docs/api/java/text/decimalformat.html

vous voudriez juste décimalformat ("0,0")


1 commentaires

Ceci imprimera 5.0 ou 5,0 avec local allemand (Java Build 1.6.0_24-B07)



2
votes

Les suggestions décimalformat sont le moyen le plus simple de gérer cela. S'ils ne suffisent pas, voici une autre idée.

Si vous commencez à toucher les valeurs maximales pouvant être représentées par des primitives en Java, vous devrez peut-être passer à BigInteger et bigdecimal .

Essayez de jouer avec le bigdecimal.tobiGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGILET (CODE> Couplé avec le Tostring () Méthodes sur BigDecimal et BigInteger.


0 commentaires

2
votes

Ce n'est pas une bonne solution Si vous utilisez de nouveaux décimalformat ("0. #"), vous manquez des données, par exemple Pi = 3.14, mais après analyser, vous avez une solution 3.1

une autre solution à utiliser EVAL% 1? (int) d: d Cette fois Couse Couse Max Integer Limit, encore une fois des données manquantes

Ma solution fonctionne, mais ce n'est pas une bonne idée xxx


0 commentaires