吃不胖啊吃不胖 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日

悬赏问题

  • ¥60 Qcustomplot绘制实时动态曲线
  • ¥20 运用matlab画x-y图
  • ¥15 用idea运行项目,运行tomcat报错:断言失败
  • ¥15 Sqlserver查询链接服务器数据问题
  • ¥15 Bibtex4Word 引用中文文献
  • ¥20 用opencv c/c++ 转换成灰度图,然后做一下直方图均衡,输出mp4文件
  • ¥20 matlab中的双层数值积分
  • ¥50 服务器打印水晶报表问题
  • ¥30 gradle环境下javafx项目如何使用druid连接池
  • ¥15 服务器打印水晶报表问题