寻找高手之 1!+2!+3+!+4!+...+20! =? (续)

来源:百度知道 编辑:UC知道 时间:2024/05/25 09:56:59
我用C写了如下的代码:
main()
{
double sum=0,cache=1;
int i;
for(i=1;i<=20;i++)
{
cache*=i;
printf("c%02d: %22.2f\n",i,cache);
sum+=cache;
printf("s%02d: %22.2f\n",i,sum);
}
}

输出结果有错(从 i=19 开始出错):
c01: 1.00
s01: 1.00
c02: 2.00
s02: 3.00
c03: 6.00
s03: 9.00
c04: 24.00
s04: 33.00
c05: 120.00
s05: 153.00
c06: 720.00
s06: 873.00
c07: 5040.00
s07: 5913.00
c08: 40320.00
s08: 46233.00
c09: 362880.00
s09: 409113.00
c10: 3628800.00
s10: 4037913.00
c11:

c19: 121645100408832000.00
s19: 128425485935180320.00

你看看c语言当中double的范围,程序是没有问题!!!

看你贴出来的c20
没发现有错误

程序没有问题

数据长度太大了