Comment afficher une sortie de données float avec 2 décimales en Java?
Puis-je le faire avec System.out.print
?
Vous devez vous connecter pour publier un commentaire.
Puis-je le faire avec System.out.print
?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
printf
méthode, comme suit:En bref, le
%.2f
syntaxe indique Java pour retourner votre variable (val
) avec 2 décimales (.2
) en représentation décimale d'un nombre à virgule flottante (f
) depuis le début de la spécificateur de format (%
).Il y a d'autres caractères de conversion vous pouvez utiliser en plus de
f
:d
: entier décimalo
: octal entiere
: virgule flottante en notation scientifiqueString.format(java.util.Locale.US,"%.2f", val);
Locale.FRANCE
?Locale.US
va trop loin. Si vous avez besoin de coder en dur "neutre" des paramètres régionaux pour les cas de pliage, nombre de rendu, etc., spécifierLocale.ROOT
. Ce serait approprié pour le texte qui sera utilisé par un autre programme, plutôt que de rendus pour des utilisateurs humains. Pour le texte présenté à l'utilisateur, l'honneur de leurs paramètres régionaux, qu'ils spécifié explicitement ou c'est la valeur par défaut.Vous pouvez utiliser
DecimalFormat
. Une façon de l'utiliser:Une autre est de le construire à l'aide de la
#.##
format.- Je trouver toutes les options de formatage moins lisible que d'appeler les méthodes de formatage, mais c'est une question de préférence.
System.out.printf("%.2f", value)
syntaxe? Est-il toujours là?DecimalFormat
réponses j'ai immédiatement eu la pensée que j'avais tort, mais je vous remercie pour préciser que.df.setMinimumFractionDigits(2);
à force de deux chiffresJe conseille Chaîne de caractères.format() si vous avez besoin de la valeur en tant que
String
dans votre code.Par exemple, vous pouvez utiliser
String.format()
de la manière suivante:DecimalFormat df = new DecimalFormat("0.00");
De nombreuses personnes ont mentionné
DecimalFormat
. Mais vous pouvez également utiliserprintf
si vous avez une version récente de Java:Voir la documentation sur le module de Formatage pour plus d'informations sur le format de printf.
Une simple astuce consiste à générer une version plus courte de votre variable en multipliant avec par exemple
100
, arrondissement elle et en la divisant par100.0
de nouveau. De cette façon, vous générer une variable, avec 2 décimales:Cette "cheap trick" a toujours été assez bon pour moi, et fonctionne dans n'importe quelle langue (je ne suis pas un Java personne, juste de l'apprendre).
Regarder DecimalFormat
Voici un exemple du tutoriel:
Si vous choisissez un modèle de type "###.##", vous obtiendrez deux décimales, et je pense que les valeurs sont arrondies. Vous aurez envie de regarder le lien pour obtenir exactement le format que vous souhaitez (par exemple, si vous voulez les zéros à droite)
De sortie est 22.35.
Si vous avez besoin de 3 points décimaux de le changer pour "%.3f".
OK - str flotter.
De sortie:
Voici le code à la façon dont vous pouvez afficher une sortie de données float avec 2 décimales en Java:
petit programme simple pour la démonstration:
Il suffit de ne
String str = System.out.printf("%.2f", val).replace(",", ".");
si vous voulez vous assurer que, indépendamment de la localisation de l'utilisateur, vous trouverez toujours /afficher un "." comme séparateur décimal. C'est un must si vous ne voulez pas faire de votre programme de crash si plus tard vous faire une sorte de conversion comme lefloat f = Float.parseFloat(str);
Une question qui m'avait pour une heure ou plus, sur
DecimalFormat
- Il des poignées double et float entrées différemment. Même le changement de RoundingMode n'a pas aidé. Je ne suis pas un expert mais il pense qu'il peut aider quelqu'un comme moi. Fini à l'aide deMath.round
à la place.Voir ci-dessous:
De sortie: