【发布时间】:2013-07-02 14:58:05
【问题描述】:
我在朋友的电脑上看到了这个财务计算代码:
double Total = ...
double Paid = ...
double Wating_For_Details = ...
double Decuctibles = ...
double Rejected = ...
好吧,当我看到这个时,我告诉他double 代表base 2 并且可以NOT 代表财务计算。请改用decimal。
太棒了。
但是当我把它改成双倍的时候我遇到了:
Attempted to divide by zero.
嗯?
显然 - 使用 double ,当与 0.0 相除时,它确实 NOT 抛出异常:
但返回NAN。
虽然我的代码(使用decimal)确实会引发异常(当Total 是zero 时)
所以我问:
我检查了0.0==0,它返回 true。那么为什么我没有得到异常但NAN?我知道它应该是这样的,但是在将 double 除以零时不抛出异常的常识在哪里?
【问题讨论】:
-
“我检查了
0.0==0” - 你认为实际检查了什么?两边的操作数的类型不相等,但存在int到double的隐式转换 - 所以您实际检查的是0.0==0.0。 -
另外,你的问题有点像抛出异常显然在这种情况下是正确的 - 在计算世界中有很多权衡,而且通常没有单一的“正确”做事方式。
-
类似于stackoverflow.com/questions/4609698/…(即使不完全重复)