Javascript算术运算符不起作用

时间:2018-03-28 12:41:33

标签: javascript

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。

6 个答案:

答案 0 :(得分: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循环更改回

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

答案 1 :(得分:0)

这可能是你问题的答案吗?

正如其他人已经说过的那样:toFixed返回一个String

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);

答案 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));

答案 3 :(得分:0)

您可以使用不含parseFloat的数字。最后,您可以格式化数字。

您只需要迭代三次并仅分配一次不变的值。

&#13;
&#13;
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));
&#13;
&#13;
&#13;

答案 4 :(得分:-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);

答案 5 :(得分:-1)

我已删除&#34;&lt; =&#34;并将其替换为&#34;&lt;&#34;因为之前的情况导致了另一次迭代,因此你得到600.00。我也在最后使用了toFixed方法,因为最初我们需要首先计算sub_total的值然后我们必须将它转换为具有两位小数的字符串。 / p>

 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));