wake-up-neo.com

Wie kann ich mit BigDecimal eine Zahl mit immer 2 Nachkommastellen anzeigen?

Ich benutze BigDecimal, um einige Preiswerte zu erhalten. Voraussetzung ist so etwas, egal welchen Wert wir aus der Datenbank holen, der angezeigte Wert sollte 2 Nachkommastellen haben.

Z.B:

der abgerufene Wert ist 1 - sollte als 1,00 angezeigt werden
Der abgerufene Wert ist 1.7823 - sollte als 1.78 angezeigt werden

Ich benutze setScale(2, BigDecimal.ROUND_HALF_UP) aber immer noch einige Stellen, wenn die Daten von DB eine ganze Zahl sind, wird das gleiche angezeigt !!

Ich meine, wenn der Wert 0 aus DB ist, wird er nur als 0 angezeigt. Ich möchte, dass das als 0.00 angezeigt wird

Vielen Dank

27
user1391730

BigDecimal ist unveränderlich. Jede Operation, einschließlich setScale (2, BigDecimal.ROUND_HALF_UP), erzeugt ein neues BigDecimal. Richtiger Code sollte sein

        BigDecimal bd = new BigDecimal(1);
//      bd.setScale(2, BigDecimal.ROUND_HALF_UP);   bd.setScale does not change bd
        bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
        System.out.println(bd);

ausgabe

1.00
44

sie können das Aufrundungsformat verwenden

BigDecimal bd = new BigDecimal(2.22222);
System.out.println(bd.setScale(2,BigDecimal.ROUND_UP));

Hoffe das hilft dir.

11
corgrin

Um Zahlen in Java zu formatieren, können Sie Folgendes verwenden:

 System.out.printf("%1$.2f", d);

wobei d Ihre Variable oder Zahl ist

oder

 DecimalFormat f = new DecimalFormat("##.00");  // this will helps you to always keeps in two decimal places
 System.out.println(f.format(d)); 
5

Sie müssen etwas wie NumberFormat mit dem entsprechenden Gebietsschema für Format verwenden

NumberFormat.getCurrencyInstance().format(bigDecimal);
2
kosa

BigDecimal.setScale würde funktionieren.

1
lwpro2