我试图在进入负数之前打破一个循环,但它继续超过0并显示负数
问题是我的while循环这是循环
while(Math.round(housetotal)>0){
housetotal-=o*12;
zx++;
row_data.push([zx,
{v:housetotal, f:'$'+Comma(housetotal)},
]);
if(zx == year || housetotal<=0){
break
}
}
我的循环就是这样的。
让我们说
housetotal = 239,852
o = 1,438
222,596并在14次循环后继续倒数至-1,732
我试图让它停在第13个循环15,524所以它不会进入负面
在我的while语句中我知道如果zx等于我所拥有的任何数字,在这种情况下是15和o * 12是出现的任何数字乘以12但在这种情况下是1,438 x 12 = 17,256
答案 0 :(得分:2)
在每次循环迭代开始时舍入后需要housetotal
为正,如果在每次循环迭代结束时不是正数,则需要断开循环。到目前为止,非常好。
然后,在那些检查之后,你(1)更改housetotal
和的值然后(2)使用它(在这种情况下,将其放入{{1 }}
如果您想在使用时确保该值为正,则应在使用前立即对其进行测试。
答案 1 :(得分:0)
var a = 239.852,
o = 1.432;
while(a>0 && (a-o*12)>0){
a -= (a-o*12)>0 ? o*12 : 0;
}
答案 2 :(得分:0)
看看for-loop。它的部分是:
<init counter variable>;
while ( <counter condition met> ) {
<do task>;
<update counter>;
}
当您在执行重复任务之前更新计数器时,它将最终在运行时不再满足条件。我建议您使用代码:
while( zx != year && Math.round(housetotal) > 0){
row_data.push([
zx,
{v:housetotal, f:'$'+Comma(housetotal)},
]);
housetotal-=o*12;
zx++;
}
答案 3 :(得分:0)
一种解决方案是在分配后检查值并打破循环:
while(Math.round(housetotal)>0){
housetotal-=o*12;
zx++;
if(zx == year || housetotal<=0) // moved here
break;
row_data.push( [zx, {v:housetotal, f:'$'+Comma(housetotal)}, ]);
}