PHP round($num,2) 和 javascript toFixed(2) 没有为此值 53.955 提供正确的输出

PHP round($num,2) and javascript toFixed(2) is not giving right output for this value 53.955

我有一个 php 函数并且有

phpans = round(53.955,2)

和javascript函数

var num  = 53.955;
var jsans = num.toFixed(2);
console.log(jsans);

jsans 和 phpans 给出了不同的 $phpans = 53.96 ans jsans = 53.95 。我不明白为什么会这样.. 谢谢提前

因为计算机无法正确表示浮点数。它可能是 53.95400000000009 或类似的东西。处理这个问题的方法是乘以 100,四舍五入,然后除以 100,这样计算机只处理整数。

var start = 53.955,
        res1,
        res2;
    
    res1 = start.toFixed(2);
    res2 = (start * 100).toFixed(0) / 100;
    console.log(res1, res2);

//Outputs
"53.95"
53.96

JAvascript 固定: toFixed() 方法将数字转换为字符串,保留指定的小数位数。

php轮: Returns 将 val 的值四舍五入到指定的精度(小数点后的位数)。精度也可以是负数或零(默认值)。

固定的结论不像 php 轮那样工作。 精度 指定要四舍五入的小数位数。

Javascript 函数:

function round_up (val, precision) {
    power = Math.pow (10, precision);
    poweredVal = Math.ceil (val * power);
    result = poweredVal / power;

    return result;
}