我知道要爲Clojure中的數字設置精度,我應該使用with-precision
函數,並且我知道它僅適用於BigDecimal值。Clojure - 如何設置較低的精度
(defn bar-triang [[a b] [c d] [e f]]
(def cen [(/ (+ a c) 2.0) (/ (+ b d) 2.0)])
(def g (get cen 0))
(def h (get cen 1))
[(with-precision 4 (+ (bigdec g) (/ (- e g) 3M)))
(with-precision 4 (+ (bigdec h) (/ (- f h) 3M)))])
(bar-triang [4, 6], [12, 4], [10, 10])
=> [8.666666666666666 6.666666666666667]
在這裏,我把精度設置爲4,但是REPL給了我和前面相同的數字,並且有更多的數字。此外,我使用bigdec
強制g
和h
爲BigDecimal,但問題依然存在。我怎麼解決這個問題?
不涉及精度,但聲明局部變量使用'let'就像'(let [a 3] ..)' - 您有效地聲明'cen''g'和'h'爲全局可訪問變量 – birdspider