代码之家  ›  专栏  ›  技术社区  ›  drac_o Ipkiss

为什么输出总是零(0.0000)?[副本]

c
  •  -1
  • drac_o Ipkiss  · 技术社区  · 7 年前
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    int main()
    {
        int x,i;
        double abc,sum=0;
        printf("Enter a value for x:");
        scanf("%d",&x);
        for(i=0;i<=6;i++)
        {
            abc=pow(1/2,i)*pow((x-1)/x,i+1);
            sum=sum+abc;
        }
        printf("Sum is %f\n",sum);
    
    }
    

    正如我所检查的,数据类型中也没有值溢出,或者它是其他什么东西?

    1 回复  |  直到 7 年前
        1
  •  0
  •   R.F. Nelson    7 年前

    问题在这一行代码中:

    abc=pow(1/2, i) * pow((x-1) / x, i + 1);
    

    1/2 总是零,并且 (x - 1)/x x >0。你可以用 0.5 1.0 / 2.0 如果您想使用十进制值。另外,小心除以零。

    结果代码如下所示:

    abc=pow(0.5, i) * pow((x - 1.0)/x, i + 1.0);