为什么将一种形式的输入不断地视为字符串?

时间:2019-03-14 05:43:18

标签: javascript

这是一个非常基本的SIP计算器,最多不应超过5行。但是,可变金额一直被视为string。我必须继续使用parseFloat()并声明三个附加变量来存储最终值,然后再将其返回以使代码工作。有什么解决方法吗?

function sipCalculator(amount, r, n) {
  r = r / 12;
  amount = parseFloat(amount);
  var temp = 0;
  for (var i = 0; i < n; i++) {
    temp += amount;
    temp += (temp * (r / 100));
  }
  var x = amount * n;
  var y = parseFloat(temp.toFixed(2));
  var z = parseFloat((y - x).toFixed(2));
  return [x, y, z];
};

1 个答案:

答案 0 :(得分:1)

.toFixed(2)的调用将数字转换为字符串。如果您想让它们成为数字,同时将它们限制为两位小数,则parseFloat(num.toFixed(2)) is the recommended approach(您已经在做)。

以下是Number.prototype.toFixed上MDN的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed


如果您只是不喜欢parseFloat的冗长性,请you can use + instead将字符串转换为数字。 当然这不是最好的主意,因为不是每个人都知道它的作用。

var x = 1.44444;
console.log(+x.toFixed(2));