php ceil函数四舍五入对于特定系列不能正常工作

php ceil函数四舍五入对于特定系列不能正常工作,php,Php,这就是我的功能 function trimprice($currency, $x=5, $sf=2) { $scale = pow(10,$sf); return number_format(round(ceil($currency*$scale / $x), $sf) * $x / $scale, $sf); } 如果我提供意见 这是我期望的实际结果 2.5=>2.50 1.62=>1.65 但是如果我有1.1,它显示1.15而不是1.10,对于2.2,它显示2.25而不是2

这就是我的功能

function trimprice($currency, $x=5, $sf=2) {
    $scale = pow(10,$sf);
    return number_format(round(ceil($currency*$scale / $x), $sf) * $x / $scale, $sf);
}
如果我提供意见

这是我期望的实际结果

  • 2.5=>2.50
  • 1.62=>1.65
  • 但是如果我有1.1,它显示1.15而不是1.10,对于2.2,它显示2.25而不是2.20


    为什么会在ceil函数中发生这种情况?

    这是因为浮点值本身就不准确。试一试

    var_export(1.1);
    
    看看它印的是什么。搜索“浮点精度”应给出 你有很多关于它的信息

    希望你能接受这一点,但如果你不能,那就用理性来代替。

    展示你的“舍入”规则。你想达到什么目标?