Comment afficher une sortie de données float avec 2 décimales en Java?
12 réponses
Vous pouvez utiliser le printf
la méthode, comme ceci:
System.out.printf("%.2f", val);
En bref, la %.2f
syntaxe indique Java pour retourner votre variable (val
) avec 2 décimales (.2
) dans la 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 que vous pouvez utiliser en plus de f
:
-
d
: entier décimal -
o
: entier octal -
e
: virgule flottante dans scientifique la notation
Vous pouvez utiliser DecimalFormat
. Une façon de l'utiliser:
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
System.out.println(df.format(decimalNumber));
Un autre est de le construire en utilisant le format #.##
.
Je trouve toutes les options de formatage moins lisibles que d'appeler les méthodes de formatage, mais c'est une question de préférence.
Je suggère 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);
double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
float f = 102.236569f;
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24
Beaucoup de gens ont mentionné DecimalFormat
. Mais vous pouvez aussi utiliser printf
si vous avez une version récente de Java:
System.out.printf("%1.2f", 3.14159D);
Voir les documents sur le formateur pour plus d'informations sur la chaîne de format printf.
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 à nouveau par 100.0
. De cette façon, vous générer une variable, avec 2 décimales:
double new_variable = Math.round(old_variable*100) / 100.0;
Ce "truc bon marché" était toujours assez bon pour moi, et fonctionne dans n'importe quelle langue (Je ne suis pas une personne Java, je l'apprends juste).
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 de fin)
float floatValue=22.34555f;
System.out.print(String.format("%.2f", floatValue));
La sortie est 22.35. Si vous avez besoin de 3 points décimaux, changez-le en"%.3f".
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));
}
}
Sortie:
run:
[Original]: 0.09
[Local]: 0.10
[Remote]: 0.10
BUILD SUCCESSFUL (total time: 0 seconds)
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);
}
}
Faites simplement String str = System.out.printf("%.2f", val).replace(",", ".");
si vous voulez vous assurer que, indépendamment des paramètres régionaux de l'utilisateur, vous obtiendrez toujours / afficher un"."comme séparateur décimal. C'est un must si vous ne voulez pas que votre programme crash si vous faites plus tard une sorte de conversion comme float f = Float.parseFloat(str);