130 votes

Formatage des décimales doubles en Java

J'ai des problèmes pour formater les décimales d'un double. Si j'ai une valeur double, par exemple 4,0, comment puis-je formater les décimales de façon à ce que ce soit 4,00 à la place ?

4voto

double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));

3voto

Subhrajyoti Majumder Points 20001
new DecimalFormat("#0.00").format(4.0d);

2voto

achAmháin Points 3242

Une méthode alternative consiste à utiliser le setMinimumFractionDigits de la méthode NumberFormat classe.

Ici, vous spécifiez essentiellement le nombre de chiffres que vous souhaitez voir apparaître après la virgule.

Ainsi, une entrée de 4.0 produirait 4.00 en supposant que votre montant spécifié était de 2.

Mais, si votre Double l'entrée contient plus que le montant spécifié, il prendra le montant minimum spécifié, puis ajoutera un chiffre supplémentaire arrondi vers le haut/bas.

Par exemple, 4.15465454 avec un montant minimum de 2 spécifié produira 4.155

NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));

Essayez-le en ligne

2voto

mesuk 08308 Points 16

Vous pouvez le faire de plusieurs façons. Celles-ci sont indiquées ci-dessous :

Supposons que votre numéro d'origine soit le suivant :

 double number = 2354548.235;

Utilisation de NumberFormat :

NumberFormat formatter = new DecimalFormat("#0.00");
    System.out.println(formatter.format(number));

Utilisation de String.format :

System.out.println(String.format("%,.2f", number));

Utilisation du DecimalFormat et du modèle :

NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
        DecimalFormat decimalFormatter = (DecimalFormat) nf;
        decimalFormatter.applyPattern("#,###,###.##");
        String fString = decimalFormatter.format(number);
        System.out.println(fString);

Utilisation de DecimalFormat et du modèle

DecimalFormat decimalFormat = new DecimalFormat("############.##");
        BigDecimal formattedOutput = new BigDecimal(decimalFormat.format(number));
        System.out.println(formattedOutput);

Dans tous les cas, le sortie le sera : 2354548.23

Note :

Lors de l'arrondi, vous pouvez ajouter RoundingMode dans votre formateur. Voici quelques modes d'arrondis donnés ci-dessous :

    decimalFormat.setRoundingMode(RoundingMode.CEILING);
    decimalFormat.setRoundingMode(RoundingMode.FLOOR);
    decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
    decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
    decimalFormat.setRoundingMode(RoundingMode.UP);

Voici les importations :

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

2voto

Fazil Points 161

Vous pouvez utiliser l'une des méthodes suivantes

  1. Si vous utilisez java.text.DecimalFormat

    DecimalFormat decimalFormat = NumberFormat.getCurrencyInstance(); 
    decimalFormat.setMinimumFractionDigits(2); 
    System.out.println(decimalFormat.format(4.0));

    OU

    DecimalFormat decimalFormat =  new DecimalFormat("#0.00"); 
    System.out.println(decimalFormat.format(4.0)); 
  2. Si vous voulez le convertir en un simple format de chaîne de caractères

    System.out.println(String.format("%.2f", 4.0)); 

Tout le code ci-dessus imprimera 4.00

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X