javascript - parseFloat 和 toFixed 只返回 1 位小数

标签 javascript arrays floating-point parsefloat tofixed

在下面的工作中,当记录数组“tips”时,插入其中的数字似乎只有一位小数点。

在添加到 parseFloat 之前,它会返回 2 位小数,但它是以字符串形式返回的。一旦添加了 parseFloat,它现在似乎只返回一个小数点。

谢谢。

var tips = [];
var calculateTip = function(bill) {
  switch (true) {
    case bill < 50:
      tips.push(parseFloat((bill * 0.2).toFixed(2)));
      break;
    case bill >= 50 && bill < 201:
      tips.push(parseFloat((bill * 0.15).toFixed(2)));
      break;
    default:
      tips.push(parseFloat((bill * 0.10).toFixed(2)));
  }
}
calculateTip(124);
calculateTip(48);
calculateTip(268);
console.log(tips);

最佳答案

Number.prototype.toFixed()返回您用正确的小数位数调用的 numberstring 表示形式,但如果您使用 将其解析回 number >parseFloat,这些将会消失,因为 number 不关心尾随零。

您可以通过删除 parseFloat 来解决这个问题:

const tips = [];

function calculateTip(bill) {
  if (bill < 50)
    tips.push((bill * 0.2).toFixed(2));
  else if (bill >= 50 && bill < 201)
    tips.push((bill * 0.15).toFixed(2));
  else
    tips.push((bill * 0.10).toFixed(2));
}

calculateTip(124);
calculateTip(48);
calculateTip(268);

console.log(tips);

关于javascript - parseFloat 和 toFixed 只返回 1 位小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61531698/

相关文章:

javascript - 发现并修复内存泄漏

c - 将越界索引与从足够大的数组转换而来的较小数组一起使用是否安全?

jquery - 如何在 NodeJS 中更新 JSON 中的值并过滤以排除值?

c++ - 对 "same"类型转换的不同结果感到困惑, float 到 int

javascript - _.indexOf() `item !== item` - 它的目的是什么?

javascript - 为什么页面会重新加载而不是调用 ajax 函数?

c++ - 如何使用cout以全精度打印 double 值?

c - 从函数返回浮点值

javascript - 如何根据json文件生成热图

c# - 如何将长数组转换为字节数组?