功能圆形php无法正常工作

时间:2018-01-21 15:28:11

标签: php rounding

php function round无法正常工作。 我有号码0.9950。 我把代码:

$num = round("0.9950", 2);

我得到1.0?为什么??为什么我无法获得0.99

3 个答案:

答案 0 :(得分:1)

您可以在函数中添加第三个参数,使其满足您的需要。 您必须选择以下之一:

  • PHP_ROUND_HALF_UP
  • PHP_ROUND_HALF_DOWN
  • PHP_ROUND_HALF_EVEN
  • PHP_ROUND_HALF_ODD

这个常量很容易理解,所以只需使用改编的:) 在您的示例中,要获得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以恢复原始数字,减去我们想要截断的数字。

Demo

答案 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