首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >X != 0.0是针对DivideByZeroException的安全检查吗?

X != 0.0是针对DivideByZeroException的安全检查吗?
EN

Stack Overflow用户
提问于 2012-02-07 19:47:08
回答 2查看 204关注 0票数 4

为了在C#中防止DivideByZeroException,人们通常这样写

代码语言:javascript
复制
double f(double x) {
  if (x != 0.0) return 1000.0/x;
  else return 0.0;
}

考虑到浮点算术总是有不精确的事实,我想知道是否可以保证这个函数永远不会抛出DivideByZeroException。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-07 19:55:43

documentation说:

根据IEEE754算法的规则,

将浮点值除以零将得到正无穷大、负无穷大或非数字(NaN)。浮点运算从不抛出异常。有关更多信息,请参见Single和Double。

所以,是的,“可以保证这个函数永远不会抛出数字。”-即使没有任何检查,它也可能返回正无穷大,负无穷大,或者不是数字(NaN),即使你检查0.0,例如当你将一个相当大的值除以一个非常小的值,结果超过了double覆盖的范围。

票数 1
EN

Stack Overflow用户

发布于 2012-02-07 19:49:28

它不会抛出DivideByZeroException,因为你正在处理double算术-它只会返回无穷大。其他值可能返回无穷大,例如f(double.Epsilon)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9175692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档