使用 C 计算 e^1
calculating e^1 using C
我正在尝试使用 C 编程(输入容差级别)计算 e^1 这可行,但由于某种原因我得到了这样的错误输出:
exp 到 0.000100 容错度:2.000000
exp 到 0.000000 误差容限:2.000000
exp 到 0.000000 误差容限:2.000000
exp 到 0.000000 误差容限:2.000000
有什么想法吗?
#include <stdio.h>
#include <stdlib.h>
//this function creates factorial of n
int myfac(n)
{
if (n <= 1) return 1;
return n*myfac(n - 1);
}
void myexp(float error)
{
int n = 0;
float value = 0;
//n, n being used for recursion
//error, user input error for tolerance
//value, exp being returned as an answer
//nextvalue, value at n+1
while(1/myfac(n) >= error)
{
value = value + 1 / myfac(n);
n = n + 1;
}
printf("The exp to %f error tolerance: %f \n", error, value);
}
void main()
{
myexp(0.0001);
myexp(0.0000001);
myexp(0.0000000001);
myexp(0.0000000000001);
}
在1/myfac(n)
中,小数两边都是整数。如果 n
大于 1,结果将向下舍入为零。
试试 1./myfac(n)
,用小数点表示 double
数字类型。
我正在尝试使用 C 编程(输入容差级别)计算 e^1 这可行,但由于某种原因我得到了这样的错误输出:
exp 到 0.000100 容错度:2.000000
exp 到 0.000000 误差容限:2.000000
exp 到 0.000000 误差容限:2.000000
exp 到 0.000000 误差容限:2.000000
有什么想法吗?
#include <stdio.h>
#include <stdlib.h>
//this function creates factorial of n
int myfac(n)
{
if (n <= 1) return 1;
return n*myfac(n - 1);
}
void myexp(float error)
{
int n = 0;
float value = 0;
//n, n being used for recursion
//error, user input error for tolerance
//value, exp being returned as an answer
//nextvalue, value at n+1
while(1/myfac(n) >= error)
{
value = value + 1 / myfac(n);
n = n + 1;
}
printf("The exp to %f error tolerance: %f \n", error, value);
}
void main()
{
myexp(0.0001);
myexp(0.0000001);
myexp(0.0000000001);
myexp(0.0000000000001);
}
在1/myfac(n)
中,小数两边都是整数。如果 n
大于 1,结果将向下舍入为零。
试试 1./myfac(n)
,用小数点表示 double
数字类型。