我有一個Convert.ToDecimal()
偶爾拋出一個異常與消息我該如何處理這個double.NaN
價值要麼過大或過小的十進制
,因爲致電DataContainer.GetValue(ColKeyId, index)
返回double.NaN
。我不能更改GetValue()
的API實現調用。 處理轉換爲NaN double的十進制數的最佳方法是什麼?
我有一個Convert.ToDecimal()
偶爾拋出一個異常與消息我該如何處理這個double.NaN
價值要麼過大或過小的十進制
,因爲致電DataContainer.GetValue(ColKeyId, index)
返回double.NaN
。我不能更改GetValue()
的API實現調用。 處理轉換爲NaN double的十進制數的最佳方法是什麼?
好了,這聽起來像你只需要檢測是否是NaN值:
double value = DataContainer.GetValue(ColKeyId, index);
if (double.IsNaN(value) || double.IsInfinity(value) ||
(decimal) value != (decimal) newValueToSet)
{
DataContainer.SetValue(ColKeyId, index, newValueToSet);
}
說實話,你爲什麼從double
轉換到目前還不清楚完全可以使用decimal
,但這段代碼至少說明了如何檢測NaN /無限值。請注意,我已經改變了呼叫Convert.ToDecimal
簡單的鑄件,使代碼更簡單 - 但你可以使用Convert.ToDecimal
如果你願意,當然..
Decimal.TryParse
,那麼你就會知道,如果它轉換與否,如果沒有一個assigne值defasult或岔開了一些其他的途徑。
HTH
否,因爲TryParse(字符串,十進制)。我有一個雙精度型轉換爲十進制。與字符串無關 – Nostradamus
您可以檢查是否值double.NaN
設置前:
如果可以的話,添加'TryGetValue',如果可能的話''DataContainer''將返回'bool'和'out'的結果。如果這不可能,那就去'try' /'catch' – Alireza
那麼當結果是NaN時,你希望發生什麼?實現將非常簡單,但你需要確定你想要做什麼。 (請注意,你應該考慮積極和消極的無限......) –
@Jon。當結果是NaN時,我希望能夠和Cal SetValue – Nostradamus