Clojure:如何在计算平均值的函数中获得确切答案

时间:2019-09-02 05:43:28

标签: function clojure clojure-core.logic

我如何获得确切答案,而不仅仅是数字/计数

我可以得到一个数字列表的平均值,但是它只会加上总数并除以计数

(defn aver
  [numbers]
    (if (empty? numbers)
      0
      (/ (reduce + numbers) (count numbers)))
      )

如果我要获取[5 10]列表的平均值,我将不会获得应为7.5的答案,我只会得到方程式,否则如何得到?

 >(aver [5 10])
=> 15/2

2 个答案:

答案 0 :(得分:0)

您可以使用bicdec来精确表示该比率。例如

user=> (let [numbers [1 1 1 2]] (bigdec (/ (reduce + numbers) (count numbers))))
1.25M

答案 1 :(得分:0)

Clojure中的整数除法可为您提供有理数。如果要浮点数,则参数之一必须是浮点数。或者,您可以将结果传递到float

(float (aver [5 10]))

`