Clojure:
עיגול מספרים

איך לעשות:

ב-Clojure, אנו משתמשים בעיקר ב-Math/round, Math/floor, ו-Math/ceil:

(Math/round 3.5) ; => 4
(Math/round 3.4) ; => 3

(Math/floor 3.7) ; => 3.0
(Math/ceil 3.2)  ; => 4.0

למקומות עשרוניים ספציפיים, אנו מכפילים, מעגלים וחולקים:

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

צלילה עמוקה

לפני שפות תכנות מתוחכמות, עיגול היה תהליך ידני, חשבו על חשבון או נייר. בתכנות, זה קריטי לייצוג מספרים בשל מגבלות הדיוק של מספרים צפים.

חלופות לעיגול כוללות שימוש בכיתת BigDecimal לשליטה על הדיוק או ספריות כמו clojure.math.numeric-tower לפונקציות מתמטיות מתקדמות. הפונקציה Math/round של Clojure מסתמכת על פונקציות ה-Math.round, Math/floor, ו-Math/ceil של Java, כלומר היא נושאת את אותם הנואנסים של float ו-double.

מבחינה יישומית, כאשר מעגלים ב-Clojure, זכרו שהיא באופן אוטומטי משתמשת בדיוק double כאשר עוסקת בעשרוניים. יש להזהר משגיאות עיגול!

ראו גם