Ответ 1
Используйте функцию ceil
:
$number = ceil(1.1); //2
Я хочу убедиться, что float в PHP округляется, если присутствует какая-либо десятичная дробь, не беспокоясь о математических правилах округления. Эта функция будет работать следующим образом:
1.1 to 2
1.2 to 2
1.9 to 2
2.3 to 3
2.8 to 3
Я знаю, что существует функция round()
, но я не вижу никакой функции для округления, если будет найдено любое десятичное число. Есть ли простой способ сделать это?
Используйте функцию ceil
:
$number = ceil(1.1); //2
Я знаю, что это старая тема, однако она появляется в Google. Я продолжу ответ Blake Plumb относительно точности.
ceil(1024.321 * 100) / 100;
Умножение на 100 и деление на 100 работает только с сотой. Это неточно на десятых, тысячных, стотысячных и т.д.
function round_up($number, $precision = 2)
{
$fig = pow(10, $precision);
return (ceil($number * $fig) / $fig);
}
Результаты:
var_dump(round_up(1024.654321, 0)); // Output: float(1025)
var_dump(round_up(1024.654321, 1)); // Output: float(1024.7)
var_dump(round_up(1024.654321, 2)); // Output: float(1024.66)
var_dump(round_up(1024.654321, 3)); // Output: float(1024.655)
var_dump(round_up(1024.654321, 4)); // Output: float(1024.6544)
var_dump(round_up(1024.654321, 5)); // Output: float(1024.65433)
var_dump(round_up(1024.654321, 6)); // Output: float(1024.654321)
Примечания:
Спасибо за вклад Джозефа Макдермотта и брендома за улучшение моего оригинального фрагмента.
Ceil сделает это для вас
Взято из примера:
<?php
echo ceil(4.3); // 5
echo ceil(9.999); // 10
echo ceil(-3.14); // -3
?>
Я знаю, что на этот вопрос уже давно дан ответ, но он появился, когда я просмотрел Google по этой теме. Если вы хотите округлить с точностью, то хорошим методом было бы использовать функцию ceil и умножить число на то, сколько десятичных точек вы хотите представлять, а затем делить на это число.
ceil(1024.321*100)/100
создаст 1024.33
Мне нравится реакция на отклик, хотя я бы:
$fig = (int) str_pad('1', $precision + 1, '0');
Имеет смысл, что если я поставлю точность "2", я бы ожидал, что она будет округлена до 2 знаков после запятой. Вопрос выбора, хотя я полагаю. Спасибо за ответ Эш, хорошо работает.
Мне нравятся ответы на Эш и выбор Джозефа, поэтому я предлагаю:
$fig = pow(10, $precision);
Он также должен работать с нулевыми и отрицательными значениями точности es:
var_dump(round_up(1024.654321, -1)); // Output: float(103)