it-swarm.com.de

Doppelte Dezimalformatierung in Java

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?

93
Christoffer

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

186
kosa

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));
56
Rohit Jain

Verwenden Sie String.format :

String.format("%.2f", 4.52135);

39

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

16

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).

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

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

Online ausprobieren

0
achAmháin

Sie können eine der folgenden Methoden anwenden

  1. 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)); 
    
  2. 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.

0
Fazil

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

}
0
Mayank Parihar

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;
0