Puis-je le faire avec System.out.print
?
java
formatting
printf
decimal-point
via_point
la source
la source
String.format(java.util.Locale.US,"%.2f", val);
Locale.FRANCE
?Locale.US
va trop loin. Si vous avez besoin de coder en dur une locale "neutre" pour le pliage de casse, le rendu des nombres, etc., spécifiezLocale.ROOT
. Ce serait approprié pour le texte qui sera consommé par un autre programme, plutôt que rendu pour des utilisateurs humains. Pour le texte présenté à un utilisateur, respectez ses paramètres régionaux, qu'il l'ait spécifié explicitement ou que ce soit la valeur par défaut.Vous pouvez utiliser
DecimalFormat
. Une façon de l'utiliser:DecimalFormat df = new DecimalFormat(); df.setMaximumFractionDigits(2); System.out.println(df.format(decimalNumber));
Une autre consiste à le construire en utilisant le
#.##
format.Je trouve que toutes les options de formatage sont moins lisibles que d'appeler les méthodes de formatage, mais c'est une question de préférence.
la source
System.out.printf("%.2f", value)
syntaxe? Est-ce toujours là?DecimalFormat
réponses, j'ai immédiatement pensé que j'avais tort, mais merci d'avoir clarifié cela.df.setMinimumFractionDigits(2);
pour forcer deux chiffresJe suggérerais d'utiliser String.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:float myFloat = 2.001f; String formattedString = String.format("%.02f", myFloat);
la source
double d = 1.234567; DecimalFormat df = new DecimalFormat("#.##"); System.out.print(df.format(d));
la source
DecimalFormat df = new DecimalFormat("0.00");
float f = 102.236569f; DecimalFormat decimalFormat = new DecimalFormat("#.##"); float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24
la source
float floatValue=22.34555f; System.out.print(String.format("%.2f", floatValue));
La sortie est de 22,35. Si vous avez besoin de 3 décimales, changez-le en "% .3f".
la source
Beaucoup de gens l'ont mentionné
DecimalFormat
. Mais vous pouvez également utiliserprintf
si vous avez une version récente de Java:System.out.printf("%1.2f", 3.14159D);
Consultez la documentation sur le formateur pour plus d'informations sur la chaîne de format printf .
la source
Une astuce simple consiste à générer une version plus courte de votre variable en la multipliant par exemple
100
en l'arrondissant et en la divisant à100.0
nouveau. De cette façon, vous générez une variable, avec 2 décimales :double new_variable = Math.round(old_variable*100) / 100.0;
Ce "truc bon marché" a toujours été assez bon pour moi, et fonctionne dans n'importe quel langage (je ne suis pas une personne Java, je l'apprends juste).
la source
Vous pouvez utiliser ces codes rapides ci-dessous qui se sont modifiés à la fin. Ajoutez le nombre de zéros auquel se réfère après le point
float y1 = 0.123456789; DecimalFormat df = new DecimalFormat("#.00"); y1 = Float.valueOf(df.format(y1));
la source
Regardez DecimalFormat
Voici un exemple du tutoriel:
DecimalFormat myFormatter = new DecimalFormat(pattern); String output = myFormatter.format(value); System.out.println(value + " " + pattern + " " + output);
Si vous choisissez un modèle comme "###. ##", vous obtiendrez deux décimales, et je pense que les valeurs sont arrondies. Vous voudrez regarder le lien pour obtenir le format exact que vous voulez (par exemple, si vous voulez des zéros à la fin)
la source
Vous trouverez ci-dessous le code pour afficher une sortie de données flottantes avec 2 décimales en Java:
float ratingValue = 52.98929821f; DecimalFormat decimalFormat = new DecimalFormat("#.##"); float twoDigitsFR = Float.valueOf(decimalFormat.format(ratingValue)); // output is 52.98
la source
OK - str pour flotter.
package test; import java.text.DecimalFormat; public class TestPtz { public static void main(String[] args) { String preset0 = "0.09,0.20,0.09,0.07"; String[] thisto = preset0.split(","); float a = (Float.valueOf(thisto[0])).floatValue(); System.out.println("[Original]: " + a); a = (float) (a + 0.01); // Part 1 - for display / debug System.out.printf("[Local]: %.2f \n", a); // Part 2 - when value requires to be send as it is DecimalFormat df = new DecimalFormat(); df.setMinimumFractionDigits(2); df.setMaximumFractionDigits(2); System.out.println("[Remote]: " + df.format(a)); } }
Production:
run: [Original]: 0.09 [Local]: 0.10 [Remote]: 0.10 BUILD SUCCESSFUL (total time: 0 seconds)
la source
Un problème qui m'a occupé pendant une heure ou plus, sur
DecimalFormat
- Il gère différemment les entrées doubles et flottantes. Même le changement de RoundingMode n'a pas aidé. Je ne suis pas un expert mais j'ai pensé que cela pourrait aider quelqu'un comme moi. J'ai fini par utiliser à laMath.round
place. Voir ci-dessous:DecimalFormat df = new DecimalFormat("#.##"); double d = 0.7750; System.out.println(" Double 0.7750 -> " +Double.valueOf(df.format(d))); float f = 0.7750f; System.out.println(" Float 0.7750f -> "+Float.valueOf(df.format(f))); // change the RoundingMode df.setRoundingMode(RoundingMode.HALF_UP); System.out.println(" Rounding Up Double 0.7750 -> " +Double.valueOf(df.format(d))); System.out.println(" Rounding Up Float 0.7750f -> " +Float.valueOf(df.format(f)));
Production:
Double 0.7750 -> 0.78 Float 0.7750f -> 0.77 Rounding Up Double 0.7750 -> 0.78 Rounding Up Float 0.7750f -> 0.77
la source
petit programme simple pour la démonstration:
import java.io.*; import java.util.Scanner; public class twovalues { public static void main(String args[]) { float a,b; Scanner sc=new Scanner(System.in); System.out.println("Enter Values For Calculation"); a=sc.nextFloat(); b=sc.nextFloat(); float c=a/b; System.out.printf("%.2f",c); } }
la source
Faites simplement
String str = System.out.printf("%.2f", val).replace(",", ".");
si vous voulez vous assurer qu'indépendamment des paramètres régionaux de l'utilisateur, vous obtiendrez / affichera toujours un "." comme séparateur décimal. C'est un must si vous ne voulez pas faire planter votre programme si vous effectuez plus tard une sorte de conversion commefloat f = Float.parseFloat(str);
la source
Essaye ça:-
private static String getDecimalFormat(double value) { String getValue = String.valueOf(value).split("[.]")[1]; if (getValue.length() == 1) { return String.valueOf(value).split("[.]")[0] + "."+ getValue.substring(0, 1) + String.format("%0"+1+"d", 0); } else { return String.valueOf(value).split("[.]")[0] +"." + getValue.substring(0, 2); } }
la source