Clojure中一个数字的绝对值

时间:2014-02-13 11:43:11

标签: clojure

如何在Clojure中计算值的绝对数?

(abs  1) => 1
(abs -1) => 1
(abs  0) => 0

3 个答案:

答案 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是后继项目。