我有個小問題,它可能是愚蠢的地方,但我仍然有它:)傻,想不通PHP回合下來:(
所以問題是:
通過這樣做
round(615.36*0.10, 2, PHP_ROUND_HALF_DOWN);
我預計結果是61.53
,但它是61.54
。
phpVersion = 5.3.2
任何人都可以幫助我解決這個問題嗎? 謝謝。
我有個小問題,它可能是愚蠢的地方,但我仍然有它:)傻,想不通PHP回合下來:(
所以問題是:
通過這樣做
round(615.36*0.10, 2, PHP_ROUND_HALF_DOWN);
我預計結果是61.53
,但它是61.54
。
phpVersion = 5.3.2
任何人都可以幫助我解決這個問題嗎? 謝謝。
PHP_ROUND_HALF_DOWN
將圍繞一半 - 即0.005
部分。
61.535
,使用PHP_ROUND_HALF_DOWN
將讓你61.53
- 而不是61.54
你應該平時四捨五入取得。
Basicall,.005
half已被舍入。
但61.536
不是半:.006
比.005
以上;所以四捨五入的價值給予61.54
。
在你的情況,你可以乘以100的值,可以使用floor()功能,併除以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)
如果你想要捨去,你需要使用floor(),它沒有方法來指定精度,所以它必須被解決,例如。與
function floor_prec($x, $prec) {
return floor($x*pow(10,$prec))/pow(10,$prec);
}
太棒了!謝謝! – arma 2011-04-13 11:13:25
是啊,我告訴你,這將是愚蠢的:d – arma 2011-04-13 11:07:35