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
สำหรับฟังก์ชันคณิตศาสตร์ขั้นสูง Clojure’s Math/round
ขึ้นอยู่กับ 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