如果存在任何小数,我想确保 PHP 中的浮点数被四舍五入,而不用担心数学舍入规则。此功能将按如下方式工作:
1.1 to 2
1.2 to 2
1.9 to 2
2.3 to 3
2.8 to 3
我知道该round()
函数存在,但如果找到任何小数,我看不到任何用于四舍五入的函数。有什么简单的方法可以做到这一点?
如果存在任何小数,我想确保 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)
笔记:
感谢 Joseph McDermott 和 Brandom 为改进我的原始代码片段所做的贡献。
官方的Ceil功能将为您做到这一点。
取自示例:
<?php
echo ceil(4.3); // 5
echo ceil(9.999); // 10
echo ceil(-3.14); // -3
?>
我知道这个问题早就被回答了,但是当我对这个话题进行谷歌搜索时,它就出现了。如果您想精确地进行四舍五入,那么一个好方法是使用 ceil 函数并将数字乘以您想要表示的小数点数,然后除以该数字。
ceil(1024.321*100)/100
将产生 1024.33
我喜欢 Ash 的回应,尽管我会:
$fig = (int) str_pad('1', $precision + 1, '0');
有道理,如果我提供精度“2”,我希望它四舍五入到小数点后 2 位。虽然我想是选择的问题。感谢灰烬的回答,效果很好。