php function round
无法正常工作。
我有号码0.9950
。
我把代码:
$num = round("0.9950", 2);
我得到1.0?为什么??为什么我无法获得0.99
?
答案 0 :(得分:1)
您可以在函数中添加第三个参数,使其满足您的需要。 您必须选择以下之一:
这个常量很容易理解,所以只需使用改编的:) 在您的示例中,要获得0.99,您需要使用:
<?php echo round("0.9950", 2, PHP_ROUND_HALF_DOWN); ?>
<强> DEMO 强>
答案 1 :(得分:0)
当你将 0.9950
四舍五入到小数点后两位时,得到1.00
,因为这就是四舍五入的工作方式。如果你想要一个导致0.99
的操作,那么你可能正在寻找浮点截断。将浮点数截断为两位小数的一个选项是乘以100,转换为整数,然后再除以100:
$num = "0.9950";
$output = (int)(100*$num) / 100;
echo $output;
0.99
此技巧有效,因为在第一步0.9950
变为99.50
之后,当转换为整数变为99
时,丢弃原始数字中第二个小数位后的所有内容。然后,我们再次除以100
以恢复原始数字,减去我们想要截断的数字。
答案 2 :(得分:0)
刚刚在PHP Sandbox中进行了测试... PHP有时似乎很有趣。
<?php
$n = 16.90;
echo (100*$n)%100, "\n"; // 89
echo (int)(100*$n)%100, "\n"; // 89
echo 100*($n - (int)($n)), "\n"; // 90
echo (int)(100*($n - (int)($n))), "\n"; // 89
echo round(100*($n - (int)($n))), "\n"; // 90