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。
答案 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
的数字。最后,您可以格式化数字。
您只需要迭代三次并仅分配一次不变的值。
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;
答案 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));