我这里有两个函数...
function getCostOne() {
var cost = 1.5;
return 1 * cost.toFixed(2);
}
还有...
function getCostTwo() {
var cost = 1.5;
return 1 + cost.toFixed(2);
}
乘以cost.toFixed(2)
和加上cost.toFixed(2)
有什么区别?
为什么相乘会返回 .5
而相加会返回 .50
?
最佳答案
这些函数分别返回 1.5
和 "11.50"
。 Working JSBin Demo ...
console.log(1 * '1.50');
console.log(1 + '1.50');
看起来字符串是在第一种情况下进行转换的(就好像您调用了 parseFloat('1.50')
,然后在第二种情况下进行了连接。但是,这只是结果 在我自己的浏览器上。看看官方的 MDN Web Docs ...
console.log('foo' * 2);
// expected output: NaN
因此,Chrome 可能处理得很好,但我不希望所有浏览器都会出现这种行为!
如果您希望它们都明确返回正确的数字,请先执行所有数学逻辑,然后使用 toFixed()
对其进行格式化。该代码看起来像...
function getCostTwo() {
var cost = 1.5;
cost += 1; // do the math logic FIRST!
return cost.toFixed(2); // once the number is just right, we format it!
}
关于javascript - 在 JavaScript 中,当小数点后仅返回一位数字时,如何显示第二个零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62365379/