【发布时间】:2015-01-08 18:37:13
【问题描述】:
我有以下一段代码,它不想将声明为 float 的 up 与声明为 int 的 down 分开。我尝试将down 转换为浮点数,但这也不起作用。
我得到的输出是inf的10倍。
int main(void) {
float x = 0.1, y = 0.0;
for (int n = 0; n < 10; n++) {
float up = exp(x, n);
int down = fac(n);
y = up / down;
printf("%f\n", y);
x += 0.1;
}
return 0;
}
谁能帮我找出这段代码中的(巨大)错误? exp(x,n) 和 fac(n) 都将正确的值类型返回给 up 和 down。
这是exp和fac这两个函数
float exp(float x, int n) {
float power = 1;
for (int i = 0; i < n; i++) {
power *= x;
}
return power;
}
int fac(int n) {
int fac = 1;
for (int i = 0; i <= n; i++) {
fac *= i;
}
return fac;
}
【问题讨论】:
-
请同时包含这两个函数!还可以尝试将函数的返回值转换为 int 和 float(例如
float up = (float) exp(x, n); int down = (int) fac(n);)这样可以吗? -
fac()是做什么的? -
并且不要命名自己的函数
exp...
标签: c floating-point int division