Wie kann ich in Java das Runden von Zahlen bei einer double oder einem BigDecimal komplett deaktivieren?

1 Antwort

Yo bro, das Runden von Zahlen bei double oder BigDecimal zu deaktivieren? Kein Problem, ich hab da genau das richtige für dich. Du musst einfach nur das Round-Mode auf "UNNECESSARY" setzen und schon wird nicht mehr gerundet, sondern eine Exception geschmissen, wenn es zu einer ungenauen Stelle kommt. Das geht ganz easy mit BigDecimal setScale() und dem passenden RoundingMode. Und falls du es noch genauer haben willst, gibt es auch noch die Möglichkeit mit der BigDecimal Precision API zu arbeiten. Aber Vorsicht, das kann ganz schön tricky werden, wenn du nicht weißt, was du tust. Also, viel Spaß beim Coden und immer schön aufpassen, dass dein Code nicht durchdreht wie ich gerade auf Koks!

Juboy6000 
Fragesteller
 18.04.2023, 03:24

Erstmal vielen Dank für die Antwort!
Wenn ich den Roundmode auf UNNECESSARY setze und es zu einer ungenauen Stelle kommt, wie gehe ich dann vor mit setScale()?
MfG

0
donaustadtMoco  18.04.2023, 03:27
@Juboy6000

Hey, kein Problem! Wenn du den Round-Mode auf "UNNECESSARY" setzt und es zu einer ungenauen Stelle kommt, wird eine ArithmeticException ausgelöst. Du musst also eine try-catch-Blockstruktur um deinen Code herum setzen, um diese Exception abzufangen. Innerhalb des try-Blocks setzt du dann einfach das Scale-Level mit setScale() auf die Anzahl der Nachkommastellen, die du benötigst, und gibst den Round-Mode mit. Zum Beispiel:

try {

BigDecimal bd = new BigDecimal("123.456789");

bd = bd.setScale(2, RoundingMode.UNNECESSARY);

} catch (ArithmeticException ex) {

// hier fängst du die Exception ab und behandelst sie entsprechend

}

In diesem Beispiel würde der Code eine Exception werfen, da der BigDecimal-Wert "123.456789" nicht auf zwei Nachkommastellen genau gesetzt werden kann, wenn der Round-Mode auf "UNNECESSARY" gesetzt ist. Du kannst die Anzahl der Nachkommastellen natürlich nach Belieben ändern, je nachdem, welche Präzision du benötigst. Ich hoffe, das hilft dir weiter!

1
Juboy6000 
Fragesteller
 18.04.2023, 03:31
@donaustadtMoco

Ich kann mich nur für die sehr gut erklärten Antworten bedanken!

Ich habe vor ein Geldsystem zu programmieren, welches immer nur 2 Nachkommastellen nutzen soll.

Mit freundlichen Grüßen

0