避免DivideByZero异常的好方法

时间:2016-09-29 15:50:41

标签: c#

我正在尝试划分多个值,并且想知道检查其中一个值是否为0的最佳方法是什么。通常我会使用像

这样的东西
var somevar = (somevalue1 != 0 || somevalue2 != 0)?somevalue1 / somevalue2:0;

我必须检查很多值,所以想知道是否有更好,更智能的方法。

2 个答案:

答案 0 :(得分:4)

您只需要检查分母以防止除以零。

所以

var somevar = somevalue2 != 0 ? somevalue1 / somevalue2 : 0;

更好,假设0是一个很好的默认值。

答案 1 :(得分:0)

有一种方法可以无需检查,无需异常处理。 这在数学上可能不是正确的方式,它是资源消耗,但仅用于信息:您可以始终使用浮点值,然后将它们切换为整数。

“浮点算术溢出或除零从不抛出异常,因为浮点类型基于IEEE 754,因此有表示无穷大和NaN(非数字)的条款。”(微软)

因此,如果你有一个没有例外的DivideByZero(通过无限常数),你可以很容易地检查。应该更具可读性。

// This will return "true".
bool isIninity = Double.IsInfinity(3.0 / 0) ?  "true" : "false");