这是我的功能
function trimprice($currency, $x=5, $sf=2) {
$scale = pow(10,$sf);
return number_format(round(ceil($currency*$scale / $x), $sf) * $x / $scale, $sf);
}
如果我提供输入
这是我期望的实际结果
但如果我有1.1它显示1.15而不是1.10而对于2.2它显示2.25而不是2.20
为什么会在ceil函数中发生这种情况?
答案 0 :(得分:0)
这是因为浮点值本质上是不准确的。尝试
var_export(1.1);
看看它打印的是什么。搜索"浮点精度"应该给 你有很多关于它的信息。
希望你可以忍受这种情况,但如果你不能再使用有理数。