C# 请教各位高手个问题,一个C#窗体程序,输入数字的太大 就会报错,这个该怎么解决呢?

这个是源码。

private void button3_Click(object sender, EventArgs e)
{
long dro1, dro2;
dro1 = Convert.ToInt64(textBox1.Text);
dro2 = Convert.ToInt64(textBox1.Text);

for (int i = 2; i <= dro1 - 1; i++) {

dro2 = dro1 % i;

if (dro2 == 0)
{
textBox4.Text = "不是素数";
break;
}
else
{
textBox4.Text = "是素数";
}
}
}

我是在 textbo.text 里面取值的,输入的数字太大,就会报错 ,这个该怎么办?

第1个回答  2011-07-19
Console.Read()方法是返回Char类型,你让i等于这个Char实际是ASCII码,并非实际输入的整数值,所以你有两种方法来解决

第一个方法如下,把ASCII码转换为实际整数值
i = Console.Read() - 48;

第二个方法如下,把字符串转换为整数值
i = int.Parse(Console.ReadLine());
第2个回答  2011-07-16
long 的有效范围是-922337203685775808~922337203685775807之间
要判断素数和和数,应不包括负数
把Long 改为ulong
范围提高一倍
另外,如此计算很慢应引入system.threading 分段计算之
第3个回答  2011-07-16
这个没办法,使用unsigned long long 最多才64位,要实现大整数最好使用专门的大整数管理类
第4个回答  2011-07-17
可以尝试限制一下输入长度嘛或尝试用double型
第5个回答  2011-07-16
try
{
dro1 = Convert.ToInt64(textBox1.Text);
dro2 = Convert.ToInt64(textBox1.Text);
}
catch (Exception ex)
{
//你的处理程序
}本回答被提问者采纳
相似回答