php ceil功能四舍五入不适用于特定系列

时间:2014-06-02 07:39:04

标签: php

这是我的功能

function trimprice($currency, $x=5, $sf=2) {
    $scale = pow(10,$sf);
    return number_format(round(ceil($currency*$scale / $x), $sf) * $x / $scale, $sf);
}

如果我提供输入

这是我期望的实际结果

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

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

1 个答案:

答案 0 :(得分:0)

这是因为浮点值本质上是不准确的。尝试

var_export(1.1);

看看它打印的是什么。搜索"浮点精度"应该给 你有很多关于它的信息。

希望你可以忍受这种情况,但如果你不能再使用有理数。