Comment afficher une sortie de données flottantes avec 2 décimales en Java?

Puis-je le faire avec System.out.print ?

Vous pouvez utiliser la méthode printf , comme ceci:

 System.out.printf("%.2f", val); 

En bref, la syntaxe %.2f indique à Java de renvoyer votre variable ( val ) avec 2 décimales ( .2 ) en représentation décimale d’un nombre à virgule flottante ( f ) à partir du début du spécificateur de format ( % ).

Il existe d’autres caractères de conversion que vous pouvez utiliser en plus de f :

  • d : entier décimal
  • o : entier octal
  • e : virgule flottante en notation scientifique

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 consiste à 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 Ssortingng.format () si vous avez besoin de la valeur Ssortingng dans votre code.

Par exemple, vous pouvez utiliser Ssortingng.format() de la manière suivante:

 float myFloat = 2.001f; Ssortingng formattedSsortingng = Ssortingng.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 également utiliser printf 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 .

Une astuce simple consiste à générer une version plus courte de votre variable en la multipliant par exemple par 100 , en l’arrondissant et en la divisant à nouveau par 100.0 . 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 pas cher” me suffisait toujours et fonctionne dans toutes les langues (je ne suis pas un Java, je l’apprends).

Regardez DecimalFormat

Voici un exemple tiré du tutoriel:

  DecimalFormat myFormatter = new DecimalFormat(pattern); Ssortingng output = myFormatter.format(value); System.out.println(value + " " + pattern + " " + output); 

Si vous choisissez un motif 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)

 float floatValue=22.34555f; System.out.print(Ssortingng.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(Ssortingng[] args) { Ssortingng preset0 = "0.09,0.20,0.09,0.07"; Ssortingng[] 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(Ssortingng 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); } } 

Il suffit de faire Ssortingng str = System.out.printf("%.2f", val).replace(",", "."); si vous voulez vous assurer que, indépendamment de la localisation de l’utilisateur, vous obtiendrez / afficherez toujours un “.” comme séparateur décimal. Ceci est un must si vous ne voulez pas faire planter votre programme si vous faites plus tard une sorte de conversion comme float f = Float.parseFloat(str);