2011-08-18 2 views

답변

14

사용 BigDecimal 번호와 with-precision :

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

그래, 그건 꽤 간단했다. 그런 질문을하는 나 절름발이. 큰 감사를 드린다! –

+0

정밀도와 함께조차도 BigDecimal은 어떤 지점에서 반올림되고 숫자 142857은 무한히 반복됩니다. (http://en.wikipedia.org/wiki/Continued_fraction 참조) – klang

+0

Clojure docs : ['with-precision'] (http://clojuredocs.org/clojure_core/clojure.core/with-precision) –

10

Clojure의 (그리고 거의 모든 lisps)의 비율 유형은 정밀도를 잃지 않는 방법이있다. 비율로 모든 계산을 수행하고 정밀도 문제를 피하기 위해 마지막 순간에 double/float로 변환하십시오.

+0

그러나 비율에주의하십시오. 예를 들어, 비율을 반복해서 곱하면 분자와 분모가 커질 수 있습니다. 이것은 매우 느려질 수 있으며 많은 RAM을 사용할 수 있습니다. – Mars

관련 문제