我一直在与 PHP 的 ceil() 函数搏斗,这给了我稍微错误的结果 - 请考虑以下几点:
$num = 2.7*3; //float(8.1)
$num*=10; //float(81)
$num = ceil($num); //82, but shouldn't this be 81??
$num/=10; //float(8.2)
我有一个可能有任意小数位的数字,我需要将它四舍五入到小数点后一位。即 8.1 应为 8.1,8.154 应为 8.2,8 应保留为 8。
我如何到达那里是取数字,乘以 10,ceil() 它,然后除以 10,但正如你所看到的,在某些情况下,我得到了额外的 0.1。
谁能告诉我为什么会这样,以及如何解决?
非常感谢任何帮助
编辑:有 +=10 而不是 *=10 :S
编辑2:我没有明确提到这一点,但我需要小数点总是向上取整,从不向下取整——这个答案是迄今为止最接近的:
rtrim(rtrim(sprintf('%.1f', $num), '0'), '.');
然而,当我需要 3.9 时,将 3.84 舍入到 3.8。抱歉,这不是更清楚:(
最终编辑:
我最终做的是:
$num = 2.7*3; //float(8.1)
$num*=10; //float(81)
$num = ceil(round($num, 2)); //81 :)
$num/=10; //float(8.1)
哪个有效:)