This question already has answers here:
Division result is always zero [duplicate]
                                
                                    (4个答案)
                                
                        
                        
                            Dividing 1/n always returns 0.0 [duplicate]
                                
                                    (3个答案)
                                
                        
                                2年前关闭。
            
                    
#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);

}


正如我所检查的那样,数据类型中没有值溢出或其他问题?

最佳答案

问题在以下代码行中:

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


1/2始终为零,并且当(x - 1)/x> 0时x也为零。如果要使用十进制值,则可以使用0.51.0 / 2.0。另外,请注意除以零。

结果代码如下所示:

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

关于c - 为什么输出总是零(0.0000)? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50567087/

10-09 09:04