我正在尝试计算 e-x = 1 - x + (x2/2!) - (x3 的 MacLaurin 级数sup>/3!) +...
我的值(value)观似乎在达到一定程度后就完全偏离了。舍入有问题吗?或者我对于这样的问题使用了错误类型的变量?
int i;
double sum=0;
double x = 8.3;
for(i=0; i<26; i++)
{
sum = sum+ (((pow(-1,i)) * (pow(x,i)))/factorial(i));
printf("Sum = %.12f\n\n\n",sum);
}
return 0;
我不明白为什么,但直到第 12 项,这些值都是正确的,但之后,它开始完全不同。
最佳答案
大概您没有显示的 factorial
函数正在执行整数算术。 12点以后!你将会溢出 32 位整数。也切换到在 factorial
函数中使用 double
。
关于c - e^-x 麦克劳林系列扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28018401/