Ich habe Probleme beim Formatieren der Dezimalzahlen eines Double. Wenn ich einen doppelten Wert habe, z. 4.0, wie formatiere ich die Dezimalzahlen so, dass sie stattdessen 4,00 beträgt?
Eine der Möglichkeiten wäre die Verwendung von NumberFormat .
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(4.0));
Ausgabe:
4.00
Mit Java 8 können Sie die format
-Methode verwenden.: -
System.out.format("%.2f", 4.0); // OR
System.out.printf("%.2f", 4.0);
f
wird für floating
Punktwert verwendet.2
after decimal gibt die Anzahl der Dezimalstellen nach .
an.Für die meisten Java-Versionen können Sie DecimalFormat
verwenden: -
DecimalFormat formatter = new DecimalFormat("#0.00");
double d = 4.0;
System.out.println(formatter.format(d));
Verwenden Sie String.format :
String.format("%.2f", 4.52135);
Mit String.format können Sie Folgendes tun:
double price = 52000;
String.format("$%,.2f", price);
Beachten Sie das Komma, das sich von der Antwort von @ Vincent unterscheidet
Ausgabe:
$52,000.00
Eine gute Quelle für die Formatierung ist die offizielle Java-Seite zum Thema
Sie können immer die statische Methode printf from System.out
verwenden - dann würden Sie das entsprechende Formatierungsprogramm implementieren. Dies spart Heap-Speicherplatz, für den Sie andere Beispiele benötigen.
Ex:
System.out.format("%.4f %n", 4.0);
System.out.printf("%.2f %n", 4.0);
Das spart viel Speicherplatz, was ein ziemlich großer Bonus ist. Trotzdem bin ich der Meinung, dass dieses Beispiel viel einfacher zu handhaben ist als jede andere Antwort, zumal die meisten Programmierer die printf-Funktion von C kennen (Java ändert die Funktion/Methode jedoch leicht).
new DecimalFormat("#0.00").format(4.0d);
double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));
Eine alternative Methode ist die Verwendung der setMinimumFractionDigits
-Methode aus der NumberFormat
-Klasse.
Hier legen Sie grundsätzlich fest, wie viele Zahlen Sie nach dem Dezimalzeichen anzeigen möchten.
Eine Eingabe von 4.0
würde 4.00
erzeugen, vorausgesetzt, Ihre angegebene Menge war 2.
Wenn Ihre Double
-Eingabe jedoch mehr als den angegebenen Betrag enthält, nimmt sie den angegebenen Mindestbetrag an und addiert eine weitere Zahl, die auf-/abgerundet wird
Beispielsweise wird 4.15465454
mit einer Mindestmenge von 2 angegeben 4.155
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));
Sie können eine der folgenden Methoden anwenden
Wenn Sie Java.text.DecimalFormat
verwenden
DecimalFormat decimalFormat = NumberFormat.getCurrencyInstance();
decimalFormat.setMinimumFractionDigits(2);
System.out.println(decimalFormat.format(4.0));
OR
DecimalFormat decimalFormat = new DecimalFormat("#0.00");
System.out.println(decimalFormat.format(4.0));
Wenn Sie es in ein einfaches Zeichenfolgenformat konvertieren möchten
System.out.println(String.format("%.2f", 4.0));
Der gesamte obige Code wird gedruckt 4.
Funktioniert 100%.
import Java.text.DecimalFormat;
public class Formatting {
public static void main(String[] args) {
double value = 22.2323242434342;
// or value = Math.round(value*100) / 100.0;
System.out.println("this is before formatting: "+value);
DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(value));
}
}
Es gibt viele Möglichkeiten, wie Sie dies tun können. Diese sind unten angegeben:
Angenommen, Ihre ursprüngliche Nummer ist wie folgt angegeben:
double number = 2354548.235;
Verwenden von NumberFormat:
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(number));
Verwenden von String.format:
System.out.println(String.format("%,.2f", number));
Mit DecimalFormat und Muster:
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
String fString = decimalFormatter.format(number);
System.out.println(fString);
Mit DecimalFormat und Muster
DecimalFormat decimalFormat = new DecimalFormat("############.##");
BigDecimal formattedOutput = new BigDecimal(decimalFormat.format(number));
System.out.println(formattedOutput);
In allen Fällen ist output : 2354548.23
Hinweis :
Während der Rundung können Sie RoundingMode
in Ihren Formatierer einfügen. Im Folgenden sind einige Rundungsmodi aufgeführt:
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;