javascript - 在 JavaScript 中,当小数点后仅返回一位数字时,如何显示第二个零?

标签 javascript tofixed

我这里有两个函数...

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/

相关文章:

javascript - 如何在 FabricJS 中调整对象大小而不缩放模式?

javascript - 显示总计(保留 2 位小数)

javascript - 仅在必要时将数字四舍五入至小数点后两位

javascript - 如何将价格限制为小数点后两位

javascript - 寻求帮助将 .toFixed 添加到 jquery。

javascript - 如何从浏览器中读取客户端的机器名?

javascript - Knockoutjs 没有将数组转换为可观察数组?

javascript - 无法向 d3 水平条添加文本

javascript - 如何根据位置数组对动态数量的项目进行动画处理