PHP浮点计算结果返回异常问题

php中如果直接小数点进行计算的话。比如16.8*3
var_dump是50.4。
但是return就变成了50.400000000000006。
至于是什么原因本人尚不得而知。
解决方法是用把计算放入下面的方法计算:

function PriceCalculate($n1, $symbol, $n2, $scale = '2')
{
    $res = "";
    if (function_exists("bcadd")) {
        switch ($symbol) {
            case "+"://加法
                $res = bcadd($n1, $n2, $scale);
                break;
            case "-"://减法
                $res = bcsub($n1, $n2, $scale);
                break;
            case "*"://乘法
                $res = bcmul($n1, $n2, $scale);
                break;
            case "/"://除法
                $res = bcdiv($n1, $n2, $scale);
                break;
            case "%"://求余、取模
                $res = bcmod($n1, $n2, $scale);
                break;
            default:
                $res = "";
                break;
        }
    } else {
        switch ($symbol) {
            case "+"://加法
                $res = $n1 + $n2;
                break;
            case "-"://减法
                $res = $n1 - $n2;
                break;
            case "*"://乘法
                $res = $n1 * $n2;
                break;
            case "/"://除法
                $res = $n1 / $n2;
                break;
            case "%"://求余、取模
                $res = $n1 % $n2;
                break;
            default:
                $res = "";
                break;
        }

    }
    return $res;

}

通过方法计算的结果再return就正常了。

你可能感兴趣的:(PHP)