Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
傻,能';我不明白php的四舍五入:(_Php - Fatal编程技术网

傻,能';我不明白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'