Округление чисел

Clojure:
Округление чисел

Как это сделать:

В Clojure мы в основном используем Math/round, Math/floor и Math/ceil:

(Math/round 3.5) ; => 4
(Math/round 3.4) ; => 3

(Math/floor 3.7) ; => 3.0
(Math/ceil 3.2)  ; => 4.0

Для конкретных десятичных мест мы умножаем, округляем и делим:

(let [num 3.14159
      scale 1000]
  (/ (Math/round (* num scale)) scale)) ; => 3.142

Подробнее

До появления продвинутых языков программирования округление было ручным процессом, подумайте об абаке или бумаге. В программировании округление критически важно для представления чисел из-за ограничений точности чисел с плавающей точкой.

Альтернативы округлению включают использование класса BigDecimal для контроля точности или библиотеки вроде clojure.math.numeric-tower для расширенных математических функций. Math/round в Clojure зависит от функций Math.round, Math/floor и Math/ceil в Java, что означает наследование тех же нюансов с типами float и double.

С точки зрения реализации, когда вы округляете в Clojure, помните, что оно автоматически использует двойную точность при работе с десятичными дробями. Будьте внимательны к ошибкам округления!

См. также