JavaScript的算术运算符不工作

问题描述 投票:0回答:6

var sub_total = 0;
  for(var i = 0; i <= 3; i++){
    var rate = parseFloat(10).toFixed(2); 
    var quantity = parseFloat(15).toFixed(2); 
    var sub_total = parseFloat((rate * quantity) + sub_total).toFixed(2);
  }
console.log(sub_total);

预期输出:

450.00

请帮我,我怎么能解决这个问题,为什么它给输出150150150.00。

javascript
6个回答
2
投票

由于subTotal是一个字符串(因为你使用toFixed),使它

var sub_total = parseFloat((rate * quantity) + sub_total);
sub_total = sub_total.toFixed(2);

演示

var sub_total = 0;
for (var i = 0; i < 3; i++) {
  var rate = parseFloat(10).toFixed(2);
  var quantity = parseFloat(15).toFixed(2);
  var sub_total = parseFloat((rate * quantity) + sub_total);
}
sub_total = sub_total.toFixed(2);
console.log(sub_total);

编辑

预期输出:

450.00

更改为环回

for (var i = 0; i <= 3; i++) {

0
投票

难道这是回答你的问题?

正如别人已经说过:toFixed返回一个字符串

var sub_total = 0;
  for(var i = 0; i <= 3; i++){
  var rate = parseFloat(10); 
  var quantity = parseFloat(15); 
  var sub_total = parseFloat((rate * quantity) + sub_total);
}
console.log(sub_total);

0
投票

你可以使用数字没有parseFloat。最后,你可以格式化数字。

你只需要重复三次分配不变的值只有一次。

var sub_total = 0,
    rate = 10,
    quantity = 15,
    i;

for (i = 0; i < 3; i++){
    sub_total += rate * quantity;
}

console.log(sub_total.toFixed(2));

0
投票

对于预计产量:450.00

你必须仅环<3,那么你将获得所需的输出。

见一击演示

var sub_total = 0,
  rate = 10,
  quantity = 15,
  i = 0;

for (; i < 3; i++) {
  sub_total += (rate * quantity);
}


console.log(sub_total.toFixed(2));

-1
投票

希望下面的代码是有帮助的。

 var sub_total = 0;
 for(var i = 0; i <= 3; i++){
  var rate = parseFloat(10).toFixed(2); 
  var quantity = parseFloat(15).toFixed(2); 
  sub_total+ =parseFloat(rate) * parseFloat(quantity) + 
  parseFloat(sub_total);

  }
 console.log(sub_total);

-1
投票

我已删除了“<=”,取而代之的是“<”,因为前一种情况会导致因为,要另一次迭代,你会得到600.00。还有我用toFixed方法在年底,因为一开始我们需要先计算SUB_TOTAL的价值那么我们把它转换为具有两个小数的字符串。

 var sub_total = 0;

  for(var i = 0; i < 3; i++){
    var rate = parseFloat(10).toFixed(2); 
    var quantity = parseFloat(15).toFixed(2); 
    sub_total = parseFloat((rate * quantity) + sub_total);
  }

    console.log(sub_total.toFixed(2));
© www.soinside.com 2019 - 2024. All rights reserved.