Clojure:
Zahlen runden
Wie:
In Clojure verwenden wir hauptsächlich Math/round
, Math/floor
und Math/ceil
:
(Math/round 3.5) ; => 4
(Math/round 3.4) ; => 3
(Math/floor 3.7) ; => 3.0
(Math/ceil 3.2) ; => 4.0
Für spezifische Dezimalstellen multiplizieren, runden und teilen wir:
(let [num 3.14159
scale 1000]
(/ (Math/round (* num scale)) scale)) ; => 3.142
Tiefergehend
Bevor es ausgeklügelte Programmiersprachen gab, war das Runden ein manueller Prozess, denke an den Abakus oder Papier. In der Programmierung ist es aufgrund von Präzisionsbegrenzungen bei Fließkommazahlen für die Zahlendarstellung entscheidend.
Alternativen zum Runden beinhalten die Verwendung der BigDecimal
-Klasse für Präzisionskontrolle oder Bibliotheken wie clojure.math.numeric-tower
für fortgeschrittene mathematische Funktionen. Clojures Math/round
basiert auf Javas Math.round
, Math/floor
und Math/ceil
Funktionen, was bedeutet, dass es die gleichen Float- und Double-Nuancen erbt.
Implementierungstechnisch, wenn in Clojure gerundet wird, denken Sie daran, dass automatisch eine doppelte Genauigkeit bei Dezimalzahlen verwendet wird. Passen Sie auf Rundungsfehler auf!
Siehe auch
- Clojure Math-API: https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/math-context
- Java Math-API: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html
- Verständnis der Genauigkeit von Fließkommazahlen: https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html