吃不胖啊吃不胖 2021-09-25 11:41 采纳率: 50%
浏览 18
已结题

请问这个sum2为什么计算出的值会是0?



```c#
#include<stdio.h>

int main(void)
{
    float i;
    float upper;
    float sum1, sum2;
    _Bool enter_is_right;

    printf("Please enter the total number of time(<=0 to quit):");
    enter_is_right = scanf_s("%f", &upper);

    while ((upper > 0) && enter_is_right)
    {
        for (i = 1.0, sum1 = 0.0, sum2 = 0.0; i <= upper; i++)
        {
            sum1 += 1.0 / i;
            sum2 += (1.0 / i) * (float)pow(-1.0, i + 1);
        }
        printf("sum1=%f,sum2=%f\n", sum1, sum2);
        printf("Enter the upper(<=0 to quit:");
        scanf_s("%f", &upper);
    }
    printf("bye!\n");

    return 0;
}

```

  • 写回答

1条回答 默认 最新

  • 我素wfz 2021-09-25 11:43
    关注

    把float换成double,等于0是因为float的精度问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月6日
  • 已采纳回答 9月28日
  • 创建了问题 9月25日