php圆形不工作时,我使用浮动7/100


php round not working when I use float 7 / 100

我的代码非常简单,例如,我的php版本是5.5.11,这是我的示例代码:

$result = round(($num / 100), 2); // 0.070000000001
$result = $num / 100; // 0.070000000001

我得到$result0.070000000001,如果$num = 3,则$result是正确的。我用了var_dump($num),类型是浮点。我该怎么修?

编辑

我找到了原因,但我不确定细节。我使用Codeigniter,加载了一个库PHPExcel,这是第三方库,当我加载它时,我会遇到这个问题,但我不确定原因的细节。

正如我在评论中所写的,它与浮动如何存储在内存中有关

来自手册:

永远不要相信浮点数的结果是最后一位,也不要直接比较浮点数以求相等。如果需要更高的精度,可以使用任意精度的数学函数和gmp函数。

http://php.net/manual/en/language.types.float.php

我不知道你想对这个浮动变量做什么,但如果你想比较,那么你需要一些$epsilon

if(abs($a-$b) < $epsilon)

若你们想四舍五入,那个么你们可能应该忽略最后一个数字。number_format()似乎是更好的解决方案。

这是浮点数的问题。

你甚至可以试试bccomp

    $a = 1.2 * 3;
    if (bccomp($a, 3.6) === 0) {
        echo 'equal';
    } else {
        echo 'not equal';
    }
    //echoes equal
    echo "----------------------";
    $a = 1.2 * 3;
    if ($a == 3.6) {
        echo 'equal';
    } else {
        echo 'not equal';
    }
    //echoes not equal