Clojure:
Làm tròn số

Làm thế nào:

Trong Clojure, chúng ta chủ yếu sử dụng Math/round, Math/floor, và Math/ceil:

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

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

Để làm tròn đến các vị trí thập phân cụ thể, chúng ta nhân, làm tròn và chia:

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

Sâu hơn

Trước khi có những ngôn ngữ lập trình tinh vi, việc làm tròn là một quy trình thủ công, hãy nghĩ về bàn tính hoặc giấy. Trong lập trình, nó rất quan trọng đối với việc biểu diễn số do giới hạn độ chính xác của số dấu phẩy động.

Các phương án thay thế để làm tròn bao gồm sử dụng lớp BigDecimal để kiểm soát độ chính xác hoặc thư viện như clojure.math.numeric-tower cho các chức năng toán học nâng cao. Math/round của Clojure dựa vào các hàm Math.round, Math/floor, và Math/ceil của Java, có nghĩa là nó thừa hưởng các vấn đề về số dấu phẩy động và số double.

Về việc triển khai, khi làm tròn trong Clojure, hãy nhớ rằng nó tự động sử dụng độ chính xác double khi xử lý với số thập phân. Hãy cẩn thận với lỗi làm tròn!

Xem thêm