C# 类型转换问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 11:42:17
private void button3_Click(object sender, EventArgs e)
{
string s = textBox2.Text.Trim();
int j = Convert.ToInt32(s);
double[] a = new double[j];
a[0] = 1;
a[1] = 1;
for (int i = 2; i <= a.Length - 1; i++)
{
a[i] = a[i - 1] + a[i - 2];
}
textBox1.Text = Convert.ToString(a[a.Length - 1]);
}
这是我做的WinForm当中的一段代码,计算的是1,1,2,3,5,8,13.....,求第50位的和。上面的代码是我后来改的,我以前是这样写的
我把double[] a = new double[j];改为int[] a = new int[j];
用double的时候还正常显示,用int后值就变了,是从第47位开始变的
比如47位的值:double时是2971215073;int时就变成-1323752223;
请问谁能解释一下这是怎么回事?

超出了范围
double范围
1.7e-308~1.7e+308
int范围
-2,147,483,648 到 2,147,483,647

注意下double和int值的范围

int显示不了那么大的数字。考虑一下老师对二进制的讲解。