1!+2!+...+20!,用c++编的

来源:百度知道 编辑:UC知道 时间:2024/06/27 16:12:02
#include <iostream>
using namespace std;
int main()
{
double s=1,sum=0;
for(int i=1;i<=20;i++)
{
for(int j=i;j<=i;j++)
{
s=s*j;
//cout<<s<<endl;
}
sum=sum+s;
cout<<sum<<endl;
}
}
double s=1,sum=0;在这里为什么定义为double?不能用long int吗?

long int表示的范围是–2,147,483,648 to 2,147,483,647
double表示的范围是1.7E +/- 308 (15 digits)
因为20!是2432902008176640000,约是2.4E18,已经超过了long int所能表示的数值范围了,所以不能用long int

long的数据范围是
2147483647~-2147483648
而20!的值
2432902008176640000
超出太多了

double的数据范围是
1.7E +/- 308(VC中)
所以就得选double或者long double.

用double为了防止溢出