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;
}
我有一个 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;
}