簡體   English   中英

為什么 0/0 是 NaN 而 0/0.00 不是

[英]Why 0/0 is NaN but 0/0.00 isn't

使用DataTable.Compute ,並構建了一些案例進行測試:

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

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

我已經更改了我的代碼來處理兩者。 但是很想知道這里發生了什么?

我猜,這是因為帶有小數點的文字受到System.Decimal威脅並導致DivideByZeroException

根據DataColumn.Expression

整數文字 [+-]?[0-9]+ 被視為System.Int32System.Int64System.Double

沒有科學記數法但帶有小數點的實際文字被視為System.Decimal 如果數量超過System.Decimal支持的最大值或最小值,則將其解析為System.Double

根據DivideByZeroException

嘗試將整數或Decimal數值除以零時引發的異常。

對於System.Double它返回 Nan,因為如果操作是除法並且常量是整數,它會根據參考源更改為雙精度結果類型(感謝 @steve16351 找到了不錯的結果)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM