为什么把x!=0改成x>=0程序就能算出来了呢?要求用循环计算s=1.0+0.9+0.8+0.7+0.6+0.5+0.4+0.3+0.2+0.1





#include <stdio.h>

int main() {
    double s=0;
    for (double x=1.0;x!=0;x-=0.1)
        s+=x;
    printf("%.1f\n",s);
    return 0;
}

img

这是由于精度导致的,最终x不等于0

for的第二个语句是条件语句,只有满足条件才能进行for下面的计算,如果是x!=0的话就已经不满足条件了,因此不会执行for下面的语句,但是x>=0就可以

double精度会使0.1-0.1=0.00000000001,而不等于零