Réponses:
String.format("%1$,.2f", myDouble);
String.format
utilise automatiquement les paramètres régionaux par défaut.
%1, %2
et ainsi de suite peuvent être utilisés pour réorganiser la sortie en fonction de l'index de vos arguments d'entrée. Regarde ça . Vous pouvez omettre l'index et l'ordre par défaut sera assumé par le formateur.
String.format("%4.3f" , x) ;
Cela signifie que nous avons besoin d'un total de 4 chiffres en ans, dont 3 après la virgule. Et f est le spécificateur de format de double. x signifie la variable pour laquelle nous voulons le trouver. A travaillé pour moi. . .
String.format("%014.3f" , 58.656565)
-> 0000000058,657
: 14 symboles au total: 8 zéros et 5 chiffres et 1 virgule. Donc, dans ce cas, le nombre 14
signifie le nombre total de symboles (les symboles supplémentaires sont remplacés par un zéro non significatif , pourraient se passer, puis ils seraient remplacés par un espace) dans la chaîne de résultat . La .3
partie est ici complètement indépendante.
String.format("%014.3f" , 58.656565)
-> 58,657
. Je le prends parce que la préférence va à la .3f
pièce: il imprime d'abord le nombre avec 3 décimales et après s'il reste des symboles, il imprime des espaces de début (ou des zéros / quoi que ce soit). Dans ce cas, le nombre est 2 + 3 + 1 = 6 symboles et nous voulions seulement imprimer 4, il n'y a donc certainement pas d'espaces supplémentaires.
Si vous souhaitez le formater avec des symboles définis manuellement, utilisez ceci:
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator('.');
decimalFormatSymbols.setGroupingSeparator(',');
DecimalFormat decimalFormat = new DecimalFormat("#,##0.00", decimalFormatSymbols);
System.out.println(decimalFormat.format(1237516.2548)); //1,237,516.25
La mise en forme basée sur les paramètres régionaux est cependant préférable.
code extrait de ce lien ;
Double amount = new Double(345987.246);
NumberFormat numberFormatter;
String amountOut;
numberFormatter = NumberFormat.getNumberInstance(currentLocale);
amountOut = numberFormatter.format(amount);
System.out.println(amountOut + " " +
currentLocale.toString());
La sortie de cet exemple montre comment le format du même nombre varie avec les paramètres régionaux:
345 987,246 fr_FR
345.987,246 de_DE
345,987.246 en_US
public class MainClass {
public static void main(String args[]) {
System.out.printf("%d %(d %+d %05d\n", 3, -3, 3, 3);
System.out.printf("Default floating-point format: %f\n", 1234567.123);
System.out.printf("Floating-point with commas: %,f\n", 1234567.123);
System.out.printf("Negative floating-point default: %,f\n", -1234567.123);
System.out.printf("Negative floating-point option: %,(f\n", -1234567.123);
System.out.printf("Line-up positive and negative values:\n");
System.out.printf("% ,.2f\n% ,.2f\n", 1234567.123, -1234567.123);
}
}
Et imprimez:
3 (3) +3 00003
Format en virgule flottante par défaut: 1234567,123000 Virgule
flottante avec virgules: 1.234.567.123000 Virgule
flottante négative par défaut: -1.234.567.123000
virgule flottante négative: (1.234.567, 123000)Line-up valeurs positives et négatives:
1.234.567,12
-1.234.567,12
Il existe de nombreuses façons de procéder. Ceux-ci sont donnés ci-dessous:
Supposons que votre numéro d'origine soit indiqué ci-dessous: double nombre = 2354548.235;
Utilisation NumberFormat
et mode d'arrondi
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
decimalFormatter.setRoundingMode(RoundingMode.CEILING);
String fString = decimalFormatter.format(number);
System.out.println(fString);
Utilisation du formateur de chaînes
System.out.println(String.format("%1$,.2f", number));
Dans tous les cas, la sortie sera: 2354548.24
Remarque :
Lors de l'arrondi, vous pouvez ajouter RoundingMode
votre formateur. Voici quelques modes d'arrondi 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;
Utilisation DecimalFormat
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
String fString = decimalFormatter.format(myDouble);
System.out.println(fString);
String.format(Locale.GERMAN, "%1$,.2f", myDouble);