带有十进制值的for循环的增量

IMI*_*IMI -1 c++ floating-point for-loop

首先让我说我已经检查了相关的主题,问题是我想制作一个带小数步长的for循环我已经准备了波纹管代码来解决这个问题,但它没有生成准确的数字与提到的步长

 float b;


   for ( double a=-0.2; a<=0.2 ; a+=0.01)// a = landa with an increment of 0.1

    {

        b = a * 100.0;
    a = ((int)b) / 100.0;

}
Run Code Online (Sandbox Code Playgroud)

我想要的是在每次迭代中都有一个准确的数字,但是因为变量被定义为一个双倍,它接近​​它必须的值.( - 0.20000000001,-0.19000000002,....)请告诉我怎么能我解决了这个问题&代码有什么问题?

Pau*_*l R 14

代替:

for (double a = -0.2; a <= 0.2; a += 0.01)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

使用整数循环索引并计算循环内的相应浮点值,例如

for (int i = -20; i <= 20 ; ++i) // a = -0.2 to 0.2 step 0.01
{
    const double a = i / 100.0;
    ...
}
Run Code Online (Sandbox Code Playgroud)