C++ for循环练习

Lau*_*tiu 0 c++ for-loop

下面你可以找到一个带有for循环的基本C++练习,问题是:循环运行后i的值是多少.(显然,值为5.)

我的问题,在第5次运行(i = 5),a的值是100,不应该循环停止,因为条件是<100?a乘以10后是不是检查了条件?(所以在a已经是100之后)

如果我在循环退出后检查a的值,它将是1000.我很困惑.为什么循环不会停在100?

#include <iostream>
using namespace std;
int main(void) {
    float a;
    int i = 0;
    for(a = 0.01; a < 1e2; a *= 1e1)
        ++i;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

pal*_*asb 7

练习旨在表明float(double等等,一般浮点数)具有您在程序文本中看到的精确十进制值.

0.01(十进制)不能以所使用的二进制浮点格式精确表示,因此乘以10五次将无法精确计算100.0.

另请参阅:浮点不准确示例