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> < p> C'est ce que j'ai jusqu'à présent: (la réponse est une double) p> 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 p> p>
4 Réponses :
Utilisez décimalformat
Je pense que vous voulez dire nouveau décimalformat ("###"); code> 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.
regarder http://download.oracle.com/javase/6 /docs/api/java/text/decimalformat.html P>
vous voudriez juste décimalformat ("0,0") p>
Ceci imprimera 5.0 code> ou
5,0 code> avec local allemand (Java Build 1.6.0_24-B07)
Les suggestions décimalformat sont le moyen le plus simple de gérer cela. S'ils ne suffisent pas, voici une autre idée. P>
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 . p>
Essayez de jouer avec le bigdecimal.tobiGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGIGILET (CODE> Couplé avec le
Tostring () Code> Méthodes sur BigDecimal et BigInteger. P>
une autre solution à utiliser EVAL% 1? (int) d: d
Cette fois Couse Couse Max Integer Limit, encore une fois des données manquantes p> Ma solution fonctionne, mais ce n'est pas une bonne idée p>
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.