PHP舍入异常?

时间:2016-06-19 13:48:49

标签: php

不确定这是否正常,但我个人认为,这并不能给我正确的结果。让我们看一下这个例子

$a = 3.32475;
$b = round($a,2,PHP_ROUND_HALF_UP);

我期待3.33,但我得到3.32。我在这里错过了什么吗?舍入函数是否只是字面上使用第3个小数点值而不是整个值,然后将其四舍五入?

我所期待的是这样的: -

 - 3.32475
 - 3.3248
 - 3.325
 - 3.33

我在这里做错了吗?有没有更好的方法让我在整个值而不是第3个小数点上获得精确的舍入?

感谢。

1 个答案:

答案 0 :(得分:1)

它会将3.33任何内容>= 3.325四舍五入。你的价值低于那个,所以它会下降到3.32。

正如the docs中所述,PHP_ROUND_HALF_UP表示:

  

将val向上舍入到精确小数位,远离零,当它位于的一半时。使1.5成2和-1.5成-2。 [强调补充]

如果你想强迫它'" round"向上,使用ceil()代替round()

$a = 3.32475;
$b = ceil($a * 100) / 100;

这可以找到"天花板"值332.475,即333,然后将其除以100得到3.33。

此外,请注意,舍入从未实际按照您描述的方式工作(一次舍入一个数字)除非您编写一个特殊例程来执行此操作(并且我无法想到任何现实世界的原因)我想这样做。)