Clojure:如何在计算平均值的函数中获得准确答案
Clojure: How to get an exact answer in a function that calculates the average
我怎样才能得到确切的答案,而不仅仅是数字/计数
我可以获得一列数字的平均值,但它只会将总数相加并除以计数
(defn aver
[numbers]
(if (empty? numbers)
0
(/ (reduce + numbers) (count numbers)))
)
如果我要得到 [5 10] 列表的平均值,我将得不到应该为 7.5 的答案,我只会得到方程式,否则我该如何得到?
>(aver [5 10])
=> 15/2
您可以使用 bicdec
来准确表示该比率。例如
user=> (let [numbers [1 1 1 2]] (bigdec (/ (reduce + numbers) (count numbers))))
1.25M
Clojure 中的整数除法为您提供有理数。如果你想要浮点数,参数之一必须是浮点数。或者,您可以将结果传递给 float
.
(float (aver [5 10]))
`
我怎样才能得到确切的答案,而不仅仅是数字/计数
我可以获得一列数字的平均值,但它只会将总数相加并除以计数
(defn aver
[numbers]
(if (empty? numbers)
0
(/ (reduce + numbers) (count numbers)))
)
如果我要得到 [5 10] 列表的平均值,我将得不到应该为 7.5 的答案,我只会得到方程式,否则我该如何得到?
>(aver [5 10])
=> 15/2
您可以使用 bicdec
来准确表示该比率。例如
user=> (let [numbers [1 1 1 2]] (bigdec (/ (reduce + numbers) (count numbers))))
1.25M
Clojure 中的整数除法为您提供有理数。如果你想要浮点数,参数之一必须是浮点数。或者,您可以将结果传递给 float
.
(float (aver [5 10]))
`