[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
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
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.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Ich habs nochmal mit einer anderen Zahl versucht und das kommt dabei raus...: https://i.ibb.co/FnPn3Br/image.png
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
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!
![](https://images.gutefrage.net/media/user/IchMalWiederXY/1526297634563_nmmslarge__8_3_247_247_26a3615ed87a22b0c5c78d0564a9f676.jpg?v=1526297635000)
Math.Round(DezZiffer, DezStelle)
Gib mit DezStelle die Dezimalstelle an an der gerundet werden soll.
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Dann kommt doch ein ganz falsches Ergebnis bei raus... Ich kann doch nicht einfach die Zahl multiplizieren, dann habe ich ein ganz anderes Ergebnis.