2011-08-18 40 views

Trả lời

14

Sử dụng BigDecimal số và with-precision:

(with-precision 50 (/ 1M 7)) 
=> 0.14285714285714285714285714285714285714285714285714M 
+0

Vâng, điều đó khá đơn giản. Lame của tôi để hỏi những câu hỏi như vậy. Cảm ơn nhiều! –

+0

Quan sát, ngay cả với độ chính xác và BigDecimal đang làm tròn tại một số điểm và các chữ số 142857 chỉ lặp lại vô hạn. (xem http://en.wikipedia.org/wiki/Continued_fraction) – klang

+0

Tài liệu Clojure: ['có độ chính xác'] (http://clojuredocs.org/clojure_core/clojure.core/with-precision) –

10

Clojure (và khá nhiều tất cả lisps) có kiểu tỷ lệ như vậy bạn không bị mất độ chính xác. làm tất cả các phép tính của bạn với tỷ lệ và chuyển đổi thành đôi/phao ở phút cuối để tránh các vấn đề về độ chính xác.

+0

Tuy nhiên, hãy cẩn thận với tỷ lệ. Ví dụ, nếu bạn tiếp tục nhân tỷ lệ nhiều lần, bạn có thể kết thúc với số lượng lớn và mẫu số. Điều này có thể rất chậm và có thể sử dụng nhiều RAM. – Mars

Các vấn đề liên quan