C语言基础题:请问各位码友为什么最后输出的答案是固定值1.000000,并且进入循环后原先赋值改变了

#include<stdio.h>
int main() {
    double eps;
    double sum = 0.0;
    scanf("%f", &eps);
    int i = 1;
    double a = 1.0;
    if (eps >= 1) { sum = 1; }
    else {
        while ((1 / i) > eps) {
            sum = sum + 1.0 / a;
            i = i + 3;
            a = -i;

        }
    }printf("sum = %.6f", sum);
    return 0;
}

img

进入循环之后赋值改变的事情遇见好几次了,但是一直不知道怎么回事,希望有朋友解答一下。

double类型的输入应该为scanf("%lf",&eps);

你写成%.2f可以保留小数点后两位。