parseFloat & toFixed 只返回 1 个小数点

parseFloat & toFixed only returning 1 decimal point

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

在加入 parseFloat 之前它会 return 2 个小数点,但是它被 return 编辑为一个字符串。添加 parseFloat 后,它现在似乎只有 return 一个小数点。

谢谢。

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() returns numberstring 表示,你用正确的小数位数调用它,但如果你将它解析回 numberparseFloat,那些将消失,因为 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 中的数字根据需要输出到控制台,小数位数不限。

console.log(1.0000001)
console.log(1.1)

您所有的数字都只显示一位小数,因为它们只有一位小数。如果你想以特定的精度显示它们,你应该 return 一个字符串。

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

我将 toFixed 方法移到了您的 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(217);
console.log(tips);