[C#]浮点数除零无法捕获异常的解决办法

解决方法:

//运算前先检查被除数是否为零,为零则手动抛出除零异常
 if (numberB == 0.0)
 {
      throw new DivideByZeroException();
 }
Result = numberA / numberB;

发现新的解决办法会再补充。

 

最近在学设计模式,照着书上做了个计算器的例子,发现了这个问题。MSDN上的解释是:

“根据 IEEE 754 算法规则,用零除浮点值将产生正无穷大、负无穷大或非数字 (NaN)。浮点运算永远不会引发异常。 有关更多信息,请参见SingleDouble。”

现在没心情去仔细研究 IEEE 754 算法,等以后遇到问题再去研究。

posted on 2013-08-22 10:46  王彤辉  阅读(1390)  评论(3编辑  收藏  举报

导航