Округление чисел с плавающей точкой

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

Решение
Для того чтобы округлить число до ближайшего целого, предназначена функция round():

$number = round(2.4); // $number = 2

Округление до ближайшего большего целого выполняется при помощи функции ceil():

$number = ceil(2.4); // $number = 3

Функция floor() позволяет округлить число до ближайшего меньшегоцелого:

$number = floor(2.4); // $number = 2

Обсуждение
Если число находится точно между двумя целыми, то поведение функции не определено:

$number = round(2.5); // $number is 2 or 3!

Будьте осторожны! Мы упоминали в рецепте 2.2, что числа с плавающей точкой не всегда выражаются точным значением, поскольку это зависит от способа их внутреннего представления в компьютере. Это может создать ситуацию, когда очевидного ответа не существует. Вместо ожидаемого «0,5» значение может быть «,499999...9» (вся группа
состоит их девяток) или «,500000...1» (с многими нулями и завершающей единицей).


Если вы хотите быть уверенным, что число округляется в большую сторону, добавьте небольшую дельту перед округлением:

$delta = 0.0000001;
$number = round(2.5 + $delta); // $number = 3

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

$cart = 54.23;
$tax = $cart * .05;
$total = $cart + $tax; // $total = 56.9415
$final = round($total, 2); // $final = 56.94

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Взятие логарифмов
Вычисление степеней
Вычисление тригонометрических функций
Вычисления с не десятичными числами
Генерация случайных чисел в пределах диапазона

Вернуться в раздел: PHP / 2. Числа