Итак, есть ли разница между рационализацией двойного против. Double (или поплавок против поплавка)? Нет, не совсем. В любом случае вы в конечном итоге получите объект Ratio, и у вас будут одинаковые характеристики производительности при выполнении большого количества математических операций с этим типом.
, например
user=> (class (rationalize 0.56))
clojure.lang.Ratio
user=> (class (Double. 0.56))
java.lang.Double
user=> (class (rationalize (Double. 0.56)))
clojure.lang.Ratio
Тем не менее, если вам нужна такая точность, то это будет путь. Но если вы можете использовать стандартную компьютерную арифметику с плавающей запятой, вам будет лучше, потому что это будет гораздо более непосредственно переводить в машинные инструкции, чем работа с объектами Ratio.