Doppelte dezimale Formatierung in Java

Ich habe Probleme beim Formatieren der Dezimalstellen eines Double. Wenn ich einen doppelten Wert habe, zB 4.0, wie formatiere ich die Dezimalstellen, so dass es stattdessen 4,00 ist?

   

    Einer der Wege 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 verwenden ..: –

     System.out.format("%.2f", 4.0); // OR System.out.printf("%.2f", 4.0); 
    • f wird für den floating verwendet.
    • 2 nach dem Komma, Anzahl der Nachkommastellen nach .

    Für die meisten Java-Versionen können Sie DecimalFormat :

      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 dies tun:

     double price = 52000; String.format("$%,.2f", price); 

    Beachten Sie das Komma, das sich von @ Vincents Antwort unterscheidet

    Ausgabe:

    $52,000.00

    Eine gute Quelle für die Formatierung ist die offizielle Java-Seite zum Thema

    Sie könnten immer die statische Methode printf from System.out – Sie würden dann den entsprechenden Formatierer implementieren; Dies spart Speicherplatz, in dem andere Beispiele erforderlich sind.

    Ex:

     System.out.format("%.4f %n", 4.0); System.out.printf("%.2f %n", 4.0); 

    Speichert Heap-Speicher, was ein ziemlich großer Bonus ist, dennoch bin ich der Meinung, dass dieses Beispiel viel besser zu handhaben ist als jede andere Antwort, zumal die meisten Programmierer die printf-function von C kennen (Java ändert die function / Methode allerdings etwas).

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

    functioniert 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)); } } 

    Eine alternative Methode ist die setMinimumFractionDigits Methode aus der NumberFormat class.

    Hier geben Sie grundsätzlich an, wie viele Zahlen nach dem Komma erscheinen sollen.

    Eine Eingabe von 4.0 würde also 4.00 , wenn der angegebene Betrag 2 ist.

    Wenn Ihre Double Eingabe jedoch mehr als den angegebenen Betrag enthält, wird der angegebene Mindestbetrag verwendet und dann eine weitere Ziffer auf- oder abgerundet

    Beispiel: 4.15465454 mit einer Mindestanzahl von 2 wird 4.155

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

    Probieren Sie es online aus

    Zuerst importieren Sie NumberFormat . Dann füge folgendes hinzu:

     NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance(); 

    Dies gibt Ihnen zwei Dezimalstellen und ein Dollarzeichen, wenn es sich um Währung handelt.

     import java.text.NumberFormat; public class Payroll { /** * @param args the command line arguments */ public static void main(String[] args) { int hoursWorked = 80; double hourlyPay = 15.52; double grossPay = hoursWorked * hourlyPay; NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance(); System.out.println("Your gross pay is " + currencyFormatter.format(grossPay)); } } 

    Sie können es wie folgt tun:

     double d = 4.0; DecimalFormat df = new DecimalFormat("#.##"); System.out.print(df.format(d)); 

    Ich weiß, dass dies ein altes Thema ist, aber wenn Sie wirklich den Punkt anstelle des Kommas haben möchten, speichern Sie einfach Ihr Ergebnis als X, 00 in einen String und ändern Sie es dann einfach für einen bestimmten Zeitraum, damit Sie X.00 erhalten

    Der einfachste Weg ist nur Ersetzen zu verwenden.

     String var = "X,00"; String newVar = var.replace(",","."); 

    Die Ausgabe wird das gewünschte X.00 sein. Um es einfach zu machen, können Sie alles auf einmal machen und in eine doppelte Variable speichern:

     Double var = Double.parseDouble(("X,00").replace(",","."); 

    Ich weiß, dass diese Antwort im Moment nicht nützlich ist, aber vielleicht wird jemand, der dieses Forum überprüft, nach einer schnellen Lösung wie dieser suchen.