[英]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
整數文字 [+-]?[0-9]+ 被視為
System.Int32
、System.Int64
或System.Double
沒有科學記數法但帶有小數點的實際文字被視為
System.Decimal
。 如果數量超過System.Decimal
支持的最大值或最小值,則將其解析為System.Double
。
嘗試將整數或
Decimal
數值除以零時引發的異常。
對於System.Double
它返回 Nan,因為如果操作是除法並且常量是整數,它會根據參考源更改為雙精度結果類型(感謝 @steve16351 找到了不錯的結果)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.