[Java] richtig runden?
Wie folgt versuche ich, eine beliebige Zahl auf die 4. Nachkommastelle zu runden:
Result = Math.round(983.983467 * 10000) / 10000;
Ergebnis von IntelliJ:
983.0
Warum funktioniert das nicht? Das ist genauso, wie ich es aus diversen Internetseiten habe.
3 Antworten
Das ist genauso, wie ich es aus diversen Internetseiten habe.
Na dann muss es ja funktionieren.
983.983467 * 10000
Liefert 9839834.67.
Math.round(9839834.67)
Liefert 9839835 (ganzzahlig).
9839835 / 10000
Dividiert ganzzahlig, Resultat ist daher 983.
In aller Regel rundet man erst bei der Ausgabe mit String.format() & Co., denn das mit dem Runden auf Dezimalstellen beißt sich mitunter mit der internen Darstellung von Fließkommazahlen.
Ich habs nochmal mit einer anderen Zahl versucht und das kommt dabei raus...: https://i.ibb.co/FnPn3Br/image.png
Häng vors Semikolon, also direkt hinter die letzte Null enfach folgendes: .0
Aber das ist pfusch.
Die saubere Lösung hat Alfredo schon geschrieben!
Math.Round(DezZiffer, DezStelle)
Gib mit DezStelle die Dezimalstelle an an der gerundet werden soll.
Dann kommt doch ein ganz falsches Ergebnis bei raus... Ich kann doch nicht einfach die Zahl multiplizieren, dann habe ich ein ganz anderes Ergebnis.