我看到在我朋友的電腦這個財務覈算代碼:0.0/0.0在C#中不會拋出「嘗試除以零。」?
double Total = ...
double Paid = ...
double Wating_For_Details = ...
double Decuctibles = ...
double Rejected = ...
嗯,我看到了這一刻,我告訴他,double
在base 2
表示,並可以不代表全面的財務覈算。改爲使用decimal
。
很好。
但我改變它的兩倍伊夫當下遇到:
Attempted to divide by zero.
吧?
顯然 - 使用double
,與0.0
將當它不拋出異常:
但返回NAN
。
雖然我的代碼(使用decimal
)不會拋出異常(當Total
是zero
)
於是我問:
我檢查0.0==0
,它返回true。所以爲什麼我沒有得到例外,但NAN
?我知道那應該是怎麼回事,但是當把零除以零時,不會拋出異常的常見感覺在哪裏?
「我檢查過了'0.0 == 0'」 - 你覺得那個實際檢查了什麼?兩邊的操作數都是不相等的類型,但是存在一個隱式的'int'到'double'的轉換 - 所以你實際檢查的是'0.0 == 0.0'。 –
另外,你的問題有點像是拋出一個異常很顯然是在這種情況下做的正確的事情 - 在計算世界中存在許多權衡,並且往往沒有單一的「正確」方式來做事情。 –
類似於http://stackoverflow.com/questions/4609698/inconsistency-in-divide-by-zero-behavior-between-different-value-types(即使不完全重複) – bigge