四舍五入到Clojure列表中最接近的数字

时间:2018-09-24 19:46:11

标签: clojure

我正在尝试获取Clojure中数字列表的四舍五入版本。

例如(Math/round 10.5)给了我11作为答案,这很好。但是,我尝试使用'apply'-(apply Math/round (list 1.2 2.1 3.4))的类似方法,这给了我一个错误。我期望将(1 2 3)作为输出。

如何从数字列表中获取四舍五入的输出?

1 个答案:

答案 0 :(得分:4)

使用map。请注意,您必须将对Math/round的调用包装到一个匿名函数中:有关原因,请参见this question

(map #(Math/round %) (list 1.1 2.2 3.9)) ; '(1 2 4)

您的方法存在的问题(实际上并不是一个不好的猜测)是Java的Math/round不是可变参数的:它只需要一个参数。以这种方式呼叫apply与说

相同
(Math/round 1.2 2.1 3.4)

哪些将无法编译。