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
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
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.
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));
Sie müssen etwas wie NumberFormat
mit dem entsprechenden Gebietsschema für Format verwenden
NumberFormat.getCurrencyInstance().format(bigDecimal);
BigDecimal.setScale würde funktionieren.