在负数之前打破循环

时间:2012-05-09 23:54:23

标签: javascript

我试图在进入负数之前打破一个循环,但它继续超过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

4 个答案:

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