我正在尝试为e -x = 1 - x +(x 2 / 2!)计算MacLaurin系列 - (x 3 / 3!)+ ...
我的价值观似乎达到某一点,然后完全偏离。四舍五入是否有问题,或者我是否在这样的问题中使用了错误的变量类型?
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个学期,这些数值是正确的,但在此之后,它开始完全不同。
答案 0 :(得分:1)
据推测,您未显示的factorial
函数正在执行整数运算。 12点以后!你要溢出一个32位整数。切换到使用double
功能中的factorial
。