Это связано с неточностью с плавающей запятой , которая влияет на все языки с представлениями с плавающей запятой. Есть некоторые значения, которые нельзя точно представить числами с плавающей запятой.
К счастью, Clojure также имеет поддержку высокоточных чисел, поэтому вы можете сделать:
(defn triple [arg] (* 3 arg))
(triple 1.01M)
=> 3.03M
Обратите внимание на использование «M» в конце числовых констант, чтобы указать, что вы хотите использовать высокоточные числа. В этом случае Clojure под капотом использует java.math.BigDecimal чисел.