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

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

145
demandé sur royhowie 2010-03-29 18:45:34

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
191
répondu Anthony Forloney 2018-02-20 12:41:41

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.

143
répondu Bozho 2013-02-21 16:05:12

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);
69
répondu John P. 2015-02-05 22:24:00
double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
35
répondu Kevin Sylvestre 2010-03-29 14:47:06
float f = 102.236569f; 
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24
15
répondu Phan Van Linh 2016-12-15 09:25:01

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.

9
répondu Mr. Shiny and New 安宇 2010-03-29 15:06:06

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).

7
répondu Birk 2015-04-23 13:57:24

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)

5
répondu Uri 2010-03-29 14:47:34
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".

5
répondu Aldin Philo 2014-10-17 17:21:23

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)
3
répondu YumYumYum 2012-06-05 14:15:41

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);
    }
}
1
répondu Pavan vadrevu 2016-05-27 20:37:43

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);

0
répondu Paul Efford 2018-04-10 17:57:35