C#中的0.0/0.0不会抛出"试图除以零".

Roy*_*mir 13 .net c# double

我在朋友的电脑上看过这个财务计算代码:

double Total = ...
double Paid = ...
double Wating_For_Details = ...
double Decuctibles = ...
double Rejected = ...
Run Code Online (Sandbox Code Playgroud)

嗯,我看到了这一刻,我告诉他,double在代表base 2,可以代表全面的财务核算.使用decimal来代替.

大.

但是当我把它改为Ive遇到的那一刻:

Attempted to divide by zero.

啊?

显然-使用double与分裂的时候0.0抛出异常:

在此输入图像描述

但回报NAN.

虽然我的代码(用decimal)不会抛出异常时(Totalzero)

所以我问:

我检查了0.0==0它,它返回true.那么为什么我没有得到例外NAN呢?我知道它应该是怎样但是在将零除以零时不抛出异常的常见情况是什么?

ken*_*n2k 16

与具有整数类型的操作不同,在溢出或非法操作(例如除零)的情况下抛出异常,具有浮点值的操作不会抛出异常.相反,在异常情况下,浮点运算的结果为零,正无穷大,负无穷大或不是数字(NaN):

来自DoubleMSDN.


saa*_*rim 5

请参阅http://msdn.microsoft.com/en-us/library/system.double.nan.aspx

当操作结果未定义时,方法或运算符返回NaN.例如,将零除零的结果是NaN,如以下示例所示.(...)此外,具有NaN值的方法调用或对NaN值的操作返回NaN,如以下示例所示.

以下代码示例说明了NaN的用法:

  Double zero = 0;

  // This condition will return false. 
  if ((0 / zero) == Double.NaN) 
     Console.WriteLine("0 / 0 can be tested with Double.NaN.");
  else 
     Console.WriteLine("0 / 0 cannot be tested with Double.NaN; use Double.IsNaN() instead.");
Run Code Online (Sandbox Code Playgroud)