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 ?
Réponses
Trop de publicités?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));
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;
Vous pouvez utiliser l'une des méthodes suivantes
-
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));
-
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