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);
}
展开
 我来答
syht2000
高粉答主

推荐于2016-06-04 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部

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已经超出最大值范围");
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式