傻,能';我不明白php的四舍五入:(
我有一个小问题,可能在某个地方很傻,但我仍然有:) 所以问题是: 通过这样做傻,能';我不明白php的四舍五入:(,php,Php,我有一个小问题,可能在某个地方很傻,但我仍然有:) 所以问题是: 通过这样做 round(615.36*0.10, 2, PHP_ROUND_HALF_DOWN); 我希望结果是61.53,但它是61.54 phpVersion = 5.3.2 谁能帮我解决这个问题? 谢谢。PHP\u ROUND\u HALF\u DOWN将对一半进行取整,即0.005部分 如果您有61.535,使用PHP\u ROUND\u HALF\u DOWN将获得61.53——而不是通常通过四舍五入获得的61.54
round(615.36*0.10, 2, PHP_ROUND_HALF_DOWN);
我希望结果是61.53
,但它是61.54
phpVersion = 5.3.2
谁能帮我解决这个问题?
谢谢。
PHP\u ROUND\u HALF\u DOWN
将对一半进行取整,即0.005
部分
如果您有61.535
,使用PHP\u ROUND\u HALF\u DOWN
将获得61.53
——而不是通常通过四舍五入获得的61.54
。
基本调用时,
.005
一半已向下舍入
但是61.536
不是一半:.006
比.005
多;因此,将该值四舍五入得到61.54
phpVersion = 5.3.2
在你的例子中,你可以将这个值乘以100,使用这个函数,然后将结果除以100——我想它会给出你所期望的结果:
$value = 61.536;
$value_times_100 = $value * 100;
$value_times_100_floored = floor($value_times_100);
$value_floored = $value_times_100_floored / 100;
var_dump($value_floored);
给我:
float(61.53)
很明显,您只需要小数点后两位,为什么不使用数字格式(615.36*0.10,2)如果您想向下取整,您需要使用floor(),它没有指定精度的方法,因此必须对其进行处理,例如
function floor_prec($x, $prec) {
return floor($x*pow(10,$prec))/pow(10,$prec);
}
是的,这正是我想要的,但既然这不是我的问题,我只能给你们投票。ThanksIt不起作用,因为它是四舍五入的:
float 15.315
=>string'15.32'