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 כאשר עוסקת בעשרוניים. יש להזהר משגיאות עיגול!
ראו גם
- 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
- הבנה של דיוק מספרים צפים: https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html