Clojure:
Afronden van getallen
Hoe:
In Clojure gebruiken we voornamelijk Math/round
, Math/floor
, en Math/ceil
:
(Math/round 3.5) ; => 4
(Math/round 3.4) ; => 3
(Math/floor 3.7) ; => 3.0
(Math/ceil 3.2) ; => 4.0
Voor specifieke decimalen vermenigvuldigen, ronden en delen we:
(let [num 3.14159
scale 1000]
(/ (Math/round (* num scale)) scale)) ; => 3.142
Diepe Duik
Voor de komst van geavanceerde programmeertalen was afronden een handmatig proces, denk maar aan een abacus of papier. In programmering is het cruciaal voor de getallenrepresentatie vanwege de precisielimieten van drijvende-kommagetallen.
Alternatieven voor afronden omvatten het gebruik van de BigDecimal
klasse voor precisiecontrole of bibliotheken zoals clojure.math.numeric-tower
voor geavanceerde wiskundige functies. Clojures Math/round
leunt op Java’s Math.round
, Math/floor
, en Math/ceil
functies, wat betekent dat het dezelfde nuances van float en double erft.
Qua implementatie, wanneer je in Clojure afrondt, onthoud dan dat het automatisch dubbele precisie gebruikt bij het omgaan met decimalen. Pas op voor afrondingsfouten!
Zie Ook
- 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
- Begrijpen van Drijvende-kommagetallen Precisie: https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html