【发布时间】:2016-03-02 11:07:26
【问题描述】:
我知道要在 Clojure 中设置数字的精度,我应该使用 with-precision 函数,而且我知道它只适用于 BigDecimal 值。
(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] ..)- 你实际上将ceng和h声明为全局可访问变量
标签: clojure precision bigdecimal