为什么0/0是NaN但0 / 0.00不是

时间:2019-08-15 08:35:42

标签: c# datatable double decimal formula

使用DataTable.Compute,并建立了一些测试案例:

dt.Compute("0/0", null); //returns NaN when converted to double

dt.Compute("0/0.00", null); //results in DivideByZero exception

我更改了代码以同时处理这两个问题。但是想知道这里发生了什么吗?

1 个答案:

答案 0 :(得分:5)

我猜想,发生这种情况是因为带有小数点的文字被威胁为{​​{1}}并导致System.Decimal

根据MSDN

  

整数文字[+-]?[0-9] +被视为System.Int32,System.Int64   或System.Double

     

没有科学符号但带小数点的实数文字,   被视为System.Decimal。如果数量超过最大值或   System.Decimal支持的最小值,然后将其解析为   System.Double。

根据DivideByZeroException

  

尝试分割一个对象时抛出的异常   整数或十进制值零。

对于DivideByZeroException,它返回Nan,因为根据reference source,如果操作是除法并且常量是整数,它将变为双精度结果类型(感谢@ steve16351表示很高兴)