Antworten:
String.format("%1$,.2f", myDouble);
String.format Verwendet automatisch das Standardgebietsschema.
%1, %2usw. können verwendet werden, um die Ausgabe basierend auf dem Index Ihrer Eingabeargumente neu zu ordnen. Sehen Sie das . Sie können den Index weglassen und die Standardreihenfolge wird vom Formatierer übernommen.
String.format("%4.3f" , x) ;
Dies bedeutet, dass wir insgesamt 4 Stellen in ans benötigen, von denen 3 nach der Dezimalstelle stehen sollten. Und f ist der Formatbezeichner von double. x bedeutet die Variable, für die wir sie finden möchten. Hat für mich gearbeitet. . .
String.format("%014.3f" , 58.656565)-> 0000000058,657: 14 Symbole insgesamt: 8 Nullen und 5 Zahlen und 1 Komma. In diesem Fall 14 bedeutet Zahl die Gesamtzahl der Symbole (zusätzliche werden durch führende Null ersetzt, könnten ohne auskommen, dann würde sie durch Leerzeichen ersetzt werden) in der Ergebniszeichenfolge . Der .3Teil ist hier völlig unabhängig.
String.format("%014.3f" , 58.656565)-> 58,657. Ich nehme es, weil der Teil bevorzugt wird .3f: Es druckt zuerst die Zahl mit 3 Dezimalstellen und danach, wenn noch Symbole übrig sind , führende Leerzeichen (oder Nullen / was auch immer). In diesem Fall ist die Zahl 2 + 3 + 1 = 6 Symbole und wir wollten nur 4 drucken, daher gibt es sicherlich keine zusätzlichen Leerzeichen.
Wenn Sie es mit manuell festgelegten Symbolen formatieren möchten, verwenden Sie Folgendes:
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
Eine auf dem Gebietsschema basierende Formatierung wird jedoch bevorzugt.
aus diesem Link extrahierter Code ;
Double amount = new Double(345987.246);
NumberFormat numberFormatter;
String amountOut;
numberFormatter = NumberFormat.getNumberInstance(currentLocale);
amountOut = numberFormatter.format(amount);
System.out.println(amountOut + " " +
currentLocale.toString());
Die Ausgabe dieses Beispiels zeigt, wie sich das Format derselben Nummer mit dem Gebietsschema ändert:
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);
}
}
Und ausdrucken:
3 (3) +3 00003
Standard-Gleitkommaformat: 1234567,123000
Gleitkomma mit Kommas: 1.234.567.123000
Negativer Gleitkomma-Standard: -1,234.567,123000
Negative Gleitkommaoption: (1.234.567, 123000)Positive und negative Werte der
Aufstellung : 1.234.567,12
-1.234.567,12
Es gibt viele Möglichkeiten, dies zu tun. Diese sind unten angegeben:
Angenommen, Ihre ursprüngliche Nummer ist unten angegeben: doppelte Nummer = 2354548.235;
Verwenden NumberFormatund Rundungsmodus
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);
Verwenden des String-Formatierers
System.out.println(String.format("%1$,.2f", number));
In allen Fällen lautet die Ausgabe : 2354548.24
Hinweis :
Während des Rundens können Sie RoundingModeIhren Formatierer hinzufügen . Hier sind einige der unten angegebenen Rundungsmodi :
decimalFormat.setRoundingMode(RoundingMode.CEILING);
decimalFormat.setRoundingMode(RoundingMode.FLOOR);
decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
decimalFormat.setRoundingMode(RoundingMode.UP);
Hier sind die Importe :
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
Verwenden 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);