Double-Rundung auf 1 Dezimalstelle in Kotlin: Wie bekomme ich aus 0.044999 0.1?
Hallo zusammen! Ich habe gerade angefangen, Kotlin für Android zu lernen, und bin auf ein seltsames Problem mit der Rundung von Gleitkommazahlen gestoßen.
Ich habe eine Variable vom Typ Double: `val number = 0.044999`. Ich muss sie auf eine Dezimalstelle runden, um 0.1 zu erhalten (also mathematisch korrekte Aufrundung, da die nächste Stelle nach 0.0 eine 4 ist, aber wenn man die gesamte Zahl betrachtet, ergibt 0.045 bereits 0.1 bei Rundung auf eine Stelle).
Ich habe `String.format("%.1f", number)` ausprobiert, aber es gibt `0.0` aus, weil format nur auf die erste Nachkommastelle schaut? Dann habe ich `Math.round(number * 10.0) / 10.0` versucht, aber das Ergebnis ist wieder `0.0`. Ich bin ratlos!
Hier ist mein Code:
```kotlin
fun main() {
val number = 0.044999
val rounded = Math.round(number * 10.0) / 10.0
println(rounded) // Gibt 0.0 aus, aber ich erwarte 0.1
}
```
Kann mir jemand erklären, warum das passiert und wie ich das richtige Ergebnis bekomme? Vielen Dank im Voraus!
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs