2012-11-14 50 views
3

我已經寫了一個Sign函數,並且想知道它是否正確(我知道是愚蠢的問題!)我只是想知道這是否是解決這個問題的最好方法任務:過零標誌功能

template<typename T> 
T sign(T n) 
{ 
    if(n < 0) return -1; 
    if(n > 0) return 1; 
    return 0; 
} 

這會爲大數據集提供足夠準確的結果嗎?任何人都可以看到一個問題,當我把這個問題放到現實生活中時,我還沒有遇到過這個問題嗎?

感謝

+1

[C/C++中是否有標準符號函數(signum,sgn)?](http://stackoverflow.com/questions/1903954/is-there-a-standard-sign-function-signum -sgn-in-cc) –

+3

返回int類型會更好嗎?目前您正在依賴'-1'和'1'可轉換爲'T'類型。 – john

+0

「準確的結果」是什麼意思?它給出*精確的*結果(除非你使用的是真正奇怪的類型,不能準確地 - 但近似地 - 表示0,1和-1)。你希望他們有多準確? –

回答

4

我會改變return 0;return n;。如果nNaN,sign應該返回NaN而不是0