Абсолютное значение числа в Clojure
Как можно вычислить абсолютный номер значения в Clojure?
(abs 1) => 1
(abs -1) => 1
(abs 0) => 0
Ответы
Ответ 1
Для double, float, long и int вы можете использовать метод java.lang.Math abs (Math/abs -1)
Позаботьтесь, чтобы он не работал для десятичных знаков, отношений, bigint (eger) и других Clojure числовых типов. Официальная Clojure вкладка математическая библиотека, которая пытается гарантировать правильную работу со всеми этими clojure.math.numeric-tower
Ответ 2
вы всегда можете сделать
(defn abs [n] (max n (- n)))
Ответ 3
Устаревший 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
является проектом-преемником.