Как я могу убедиться, что float всегда будет округлен с PHP?

Я хочу убедиться, что 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. Я продолжу ответ Блейка Пламба относительно точности.

 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», я ожидал бы округления до двух знаков после запятой. Вопрос выбора, хотя я полагаю. Спасибо за ответ Эш, хорошо работает.

Мне нравится ответ Эша и выбор Иосифа, поэтому я предлагаю:

 $fig = pow(10, $precision); 

Он должен также работать с нулевыми и отрицательными значениями точности es:

 var_dump(round_up(1024.654321, -1)); // Output: float(103)