这是我的函数
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);
看看它打印了什么。搜索"浮点精度"应该给出你知道很多关于它的信息。
希望你能接受这一点,但如果你不能,那就用理性来代替。