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的值。
於是我想要判斷當傳回值是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的值。
留言
張貼留言