使用C计算e ^ 1

时间:2015-03-20 02:21:14

标签: c series

我正在尝试使用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 个答案:

答案 0 :(得分:1)

1/myfac(n)中,分数的两边都是整数。如果n大于1,则结果将向下舍入为零。

请尝试使用1./myfac(n),小数点表示double数字类型。