Clojure:
Avrundning av tal

Hur man gör:

I Clojure använder vi främst Math/round, Math/floor och 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 specifika decimalplatser multiplicerar, avrundar och dividerar vi:

(let [num 3.14159
      scale 1000]
  (/ (Math/round (* num scale)) scale)) ; => 3.142

Djupdykning

Innan programmeringsspråk var avrundning en manuell process, tänk abakus eller papper. I programmering är det avgörande för representation av tal på grund av begränsningar i precisionen hos flyttal.

Alternativ för avrundning inkluderar användning av klassen BigDecimal för precisionskontroll eller bibliotek som clojure.math.numeric-tower för avancerade matematikfunktioner. Clojures Math/round förlitar sig på Javas Math.round, Math/floor och Math/ceil funktioner, vilket innebär att det ärver samma nyanser av float och double.

När det gäller implementering, när du avrundar i Clojure, kom ihåg att det automatiskt använder dubbel precision när det hanterar decimaler. Var försiktig med avrundningsfel!

Se även