c - 为什么输出始终为零(0.0000)?

标签 c

#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 > 0 时,(x - 1)/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/

相关文章:

C 编程语言 :if statements are not working correctly with characters

c - BerkeleyDB 不存储文件

c++ - png block 的 CRC32 计算与真实 block 不匹配

c - 在函数参数中使用 union

c - 自制内核中的三重故障

main 中的命令行参数

在 C 中从十进制转换为不同的数字系统

c - 为什么按回车键会触发 getchar() 终止?

c - 为什么我只按一次却有两个字符?

c - 读取文件(使用稀疏矩阵)并生成 CSR