c - 为什么当我输入 3 时我在这个程序中得到 0 结果?
问题描述
如果我输入一个值,让我们说“3”,我得到的结果为 0。请解释原因,如果有办法,请告诉我。我应该使用浮动吗?
#include <stdio.h>
int getResult (int nVal)
int c , f;
int nExp;
double dSum;
f = 1;
dSum = 0;
nExp = nVal;
for (c = 1; c <= nVal; c++)
{
f = f * c;
dSum += f / nExp;
nExp = nExp * nVal;
}
return dSum;
int main ()
{
int nVal, nCompute;
double dSum;
printf("Enter Number to be Computed");
scanf("%d",&nVal);
nCompute = getResult (nVal);
printf("%d", nCompute);
return 0;
}
解决方案
f
和nExp
是int
s,所以你使用整数除法来划分它们,只保留结果的“整体”部分,在小数点的左边,它是零。相反,您将其中一个或两个定义为double
s,因此您将执行浮点除法。
推荐阅读
- java - 显示下一个对象 OnClickListener Android Studios
- javascript - 关于带小数的数字的奇怪字符串行为
- vb.net - 从本地目录下载文件?
- javascript - 正则表达式删除除@之外的所有非字母数字
- python - 如何在snakemake中处理可变数量的复制
- amazon-web-services - AppConfig 可以用于跨账户部署吗?
- swift - TabBarController:总是跳转到根 NavigationController
- javascript - @firebase/firestore:Firestore (7.16.0):连接 GRPC 流错误。代码:1 消息:1 CANCELLED:操作已取消
- firebase - .once() 在使用 Flutter 和 Firebase 时似乎不起作用/无法识别
- typescript - 打字稿:第一次编译总是失败,但第二次成功