2010-01-19 68 views
1

所以有一個NaN的方法,但除以零產生無窮大或負無窮大。有沒有一種方法來確定一個double是否是C#中的實數?

有一種無窮的方法(也是正無窮和負無窮)。

我想要的是IsARealNumber函數,當值是一個可表達的數字時返回true。

很顯然,我可以寫我自己的......

public bool IsARealNumber(double test) 
{ 
    if (double.IsNaN(test)) return false; 
    if (double.IsInfinity(test)) return false; 
    return true; 
} 

,但它似乎並不像我應該有。

+2

對我來說似乎很簡單:return!double.IsNaN(test)&&!double.IsInfinity(test); //在3.5框架中,您甚至可以將其作爲擴展方法。 – GalacticCowboy 2010-01-19 23:51:38

+2

而現在你已經寫了它,你永遠不會再寫它:-) – paxdiablo 2010-01-19 23:52:32

+0

它似乎不應該在那裏? @GalacticCowboy,我剛剛注意到擴展方法,我該如何補充? – 2010-01-19 23:56:34

回答

5

要將其作爲擴展方法添加,它必須是靜態類的靜態成員。

public static class ExtensionMethods 
{ 
    public static bool IsARealNumber(this double test) 
    { 
     return !double.IsNaN(test) && !double.IsInfinity(test); 
    } 
} 
+0

真棒,謝謝。 – 2010-01-20 00:03:51

+0

我是否正確地認爲只能將這些ExtensionMethods添加到對象中,而不是將它們懸掛在類上。像double.IsNaN(雙)是? – 2010-01-20 02:13:17

+0

我認爲這是正確的。它使用「this」參數的類型來確定它應用於什麼,我懷疑它是靜態的(以便將它作爲靜態成員從類中掛起)。 – GalacticCowboy 2010-01-20 12:03:43

相關問題