如何在Clojure中计算值的绝对数?
(abs 1) => 1
(abs -1) => 1
(abs 0) => 0
答案 0 :(得分:41)
对于double,float,long和int,你可以使用java.lang.Math方法abs (Math/abs -1)
注意它不适用于小数,比率,bigint(eger)和其他Clojure数字类型。官方的clojure contrib数学库试图保证正确使用所有这些是clojure.math.numeric-tower
答案 1 :(得分:29)
你总能做到
(defn abs [n] (max n (- n)))
答案 2 :(得分:10)
已弃用的clojure.contrib.math
提供了abs
功能。
来源是:
(defn abs "(abs n) is the absolute value of n" [n]
(cond
(not (number? n)) (throw (IllegalArgumentException.
"abs requires a number"))
(neg? n) (- n)
:else n))
正如@NielsK在评论中指出的那样,clojure.math.numeric-tower
是后继项目。