double NaN的判斷

最近在寫程式時,發現Math.Log()這個函式,如果第一個參數為負值時,就會傳回NaN的結果。

於是我想要判斷當傳回值是NaN時,就進行特別的處理。

我的程式碼如下:

double d = Math.Log( -1,10); // 強迫傳回NaN的值。

if(  d == double.NaN )

{

// 特別處理

}

結果發現,當d的值為NaN時,if()那行的判斷式卻不成立。真的很令人無法相信。

於是我又寫了另一段測試程式:

double d = double.NaN;

if(  d == double.NaN )

{

// 特別處理

}

各位猜猜結果如何? 我都已經直接指定d 的值就是double.NaN了。可是在if()的判斷式中就是不成立。

後來,沒辦法,只好用如下的方式來解決了。

if( double.IsNaN( d ) )

{
}

目前測試的結果,發現只有使用double.IsNaN()函式才能正確地判斷出NaN的值。

留言

這個網誌中的熱門文章

DOS Batch指令檔中如何記錄log資訊

用捷徑方式執行需帶入命令列參數的Windows Form程式

使用regular expression來match中括號(square bracket)