如何循环并每次增加0.01?

时间:2010-12-02 05:29:07

标签: c loops

我对这段代码感到很困惑。

这就是我想要它做的事情:从“v”值5开始,执行其余的函数/计算,将“v”值增加0.01,执行函数/计算,然后增加“v”值再次增加0.01,执行功能...执行此操作500次或直到达到10.00的“v”值,以更容易编码为准。

此处是我的代码:

//start loop over v  
for(iv=5;iv<=500;iv++) {  
    v=0.01*iv;
    //Lots and lots of calculations with v here
}

这是我得到的:我尝试设置iv&lt; = 10所以它只进行了10次循环,所以我可以先测试它,然后再将它放在整晚。它只做了6个循环,从v = 0.05开始到0.1结束。所以问题是a)它没有运行10个循环,b)它没有从5.00开始,它从0.05开始。

任何帮助将不胜感激。

编辑:神圣的废话,这么多的答案!到目前为止,我已经尝试了两个不同的答案,两者都有效!我一直在盯着这个并且改变代码3个小时,简直不敢相信。

6 个答案:

答案 0 :(得分:7)

您需要从iv = 500开始。如果您想要10个循环,iv++是更新,那么您将在510之前停止。

原因:v = 0.01*iv,因此v = 5表示iv = 5/0.01 = 500。至于迭代次数,如果你的for循环的格式为for (x = N; x < M; x++)(常量NM),那么max(0, M-N)循环将被执行,如果{{1}在循环中没有改变,并且没有奇怪的东西(例如溢出,负数的隐藏转换为无符号等)。

修改

而不是使用xv = 0.01 * iv可能更准确。原因:0.01在浮点时不能完全表示,但100.0是。

答案 1 :(得分:2)

更改SiegeX的代码,使其使用整数(“更准确”):

double dv;
int iv;
for(iv = 500; dv <= 1000; iv += 1)
{
    dv = (double)iv / 100.0;
}

答案 2 :(得分:0)

double iv;
for(iv = 5.0; iv <= 10.0 ; iv += 0.01) {
/* stuff here */
}

答案 3 :(得分:0)

int i;
double v;
v = 5;
for (i = 0; i < 500; i++)
{
    v += 0.01;
    // Do Calculations Here.

    if (v >= 10.00) break;
}

这给你们两个。这将最多迭代500次,但如果v值达到(或超过)10.00,则会突破该循环。

如果你只想要一个或另一个:

10.00版本:

double v;
v = 5.0;
while ( v < 10.00 )
{
    v += 0.01;
    // Do Calculations Here. 
}

500次迭代版本:

double v;
int i;
v = 5.0;
for( i = 0; i < 500; i++ )
{
    v += 0.01;
    // Do Calculations.
}

(请注意,这不是C99,它允许在循环中使用更清晰的声明语法。)

答案 4 :(得分:-1)

iv <= 10不会对10个循环执行此操作,直到iv大于10才会执行此操作。

答案 5 :(得分:-1)

//start loop over v  
for(iv=0;iv<500;iv++) //loop from 0 to 499
{  
    v=v+0.01; //increase v by 0.01
    //Lots and lots of calculations with v here
}

这应该做到