原諒我,如果這是一個愚蠢的初學者問題,但我真的不明白。Javas Math.sin()始終產生NaN
我有一個成員變量聲明,如下所示:
public Double Value;
當我分配3.14159265到價值,並試圖計算它的正弦,出現這種情況:
system.out.println(Value.toString()); //outputs 3.14159265
Value = Math.sin(Value);
system.out.println(Value.toString()); //outputs NaN
其實,出現這種情況我嘗試了每一個值 - 即使是0! Math.sin()似乎總是生成NaN,無論參數值如何。
文檔說:
如果參數是NaN或無窮大,那麼結果是NaN。
但我的論點顯然不是NaN或無窮!
那裏發生了什麼?
UPDATE
原來我是地球上最愚蠢的程序員。在我的項目中,整個代碼當然比上面的例子複雜得多。它是一種表達式解析器&評估器,對於定義的數學函數,我使用switch-clause來決定調用哪個函數 - 我忘記了導致sqrt函數以負參數執行的情況下的break語句。
正如我所說的 - 地球上最愚蠢的程序員......
我接受了最上面的答案,因爲它是最好恕我直言。對不起,你們浪費你的時間 - -
你試過硬編碼的雙打0.0,1.0嗎? – extraneon
可能是自動裝箱的東西...你可以用'double'而不是'double'來試試嗎? –
你的代碼甚至沒有編譯..你如何分配值? – Bozho