C#请问为什么这个的overflowexception异常抓不到
staticvoidMain(string[]args){doublex=0,y=0,sum=0;Console.WriteLine("pleaseinputfirstn...
static void Main(string[] args)
{
double x = 0, y = 0, sum = 0;
Console.WriteLine("please input first number: ");
string arg1 = Console.ReadLine();
bool b1 = double.TryParse(arg1, out x);
if (b1==false)
{
Console.WriteLine("your input is error!");
return;
}
Console.WriteLine("please input second number: ");
string arg2 = Console.ReadLine();
bool b2 = double.TryParse(arg2, out y);
if (b2==false)
{
Console.WriteLine("your input is error!");
return;
}
try
{
sum = x + y;
}
catch(OverflowException oe)
{
Console.WriteLine(oe.Message);
}
Console.WriteLine("{0}+{1}={2}",x,y,sum);
} 展开
{
double x = 0, y = 0, sum = 0;
Console.WriteLine("please input first number: ");
string arg1 = Console.ReadLine();
bool b1 = double.TryParse(arg1, out x);
if (b1==false)
{
Console.WriteLine("your input is error!");
return;
}
Console.WriteLine("please input second number: ");
string arg2 = Console.ReadLine();
bool b2 = double.TryParse(arg2, out y);
if (b2==false)
{
Console.WriteLine("your input is error!");
return;
}
try
{
sum = x + y;
}
catch(OverflowException oe)
{
Console.WriteLine(oe.Message);
}
Console.WriteLine("{0}+{1}={2}",x,y,sum);
} 展开
1个回答
展开全部
c#中的浮点数运算不会引发任何异常
double的范围为-1.79769313486232*10^308到1.79769313486232*10^308
float f1=1;
float f2=0;
float f3=f1/f2;
即使是这样也是可以运行的,最终f3的结果为Infinity,正无穷大。
你在运行上面代码输入的时候,可以输入两次1E+380,看看最后结果是什么,以下内容是引用的。
浮点运算符(包括赋值运算符)不会引发异常。在异常情况下,浮点运算的结果为零、无穷或 NaN,如下所述:
如果浮点运算的结果对于目标格式来说太小,则运算的结果为零。
如果浮点运算结果的数值对于目标格式来说太大,则运算的结果为 PositiveInfinity 或 NegativeInfinity(具体取决于结果的符号)。
如果浮点运算无效,则运算的结果为 NaN。(比如0.0/0或者0.0/0.0)
如果浮点运算的一个或两个操作数为 NaN,则运算的结果为 NaN
如果要检查类似于OverflowException,可以用这方法来实现
if (double.IsInfinity(sum)) Console.WriteLine("sum已经超出最大值范围");
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询