我是Java新手。我正在編寫一個小程序來計算一個數字的值,當我遇到一個負數增加到一個小數指數的問題時。不知道如何使用Math.pow()
System.out.println(Math.pow(-8, 1/3f));
輸出是NaN,而我期待-2?
我在做什麼錯?有沒有其他辦法來計算這樣的問題?
任何幫助表示讚賞。
我是Java新手。我正在編寫一個小程序來計算一個數字的值,當我遇到一個負數增加到一個小數指數的問題時。不知道如何使用Math.pow()
System.out.println(Math.pow(-8, 1/3f));
輸出是NaN,而我期待-2?
我在做什麼錯?有沒有其他辦法來計算這樣的問題?
任何幫助表示讚賞。
這種情況在documentation中描述。
如果第一個參數是有限且小於零。 < ...> 如果第二個參數是有限的而不是一個整數,那麼結果是NaN。
據我所知在Java標準庫中沒有辦法做到這一點,所以你必須手動實現它。
謝謝。我想我必須將兩個案例分爲正面和負面的基礎? –
是的,但無論如何,發現負面基地的權力似乎不是一個微不足道的問題。 – Kuvaldis
這會得到一個複數。因此它給了NaN。閱讀[這個問題](http://stackoverflow.com/questions/20250453/why-math-powa-b-is-nan-when-a-is-a-negative-number-and-b-isa-a-非整數) –
我期待(-2)^ 3 = -8,所以答案是-2? –
在這種情況下,它可能會返回一個真實的數字,但是一般情況下'(-n)^(1/m)'的結果空間是一些複數,所以規範說它應該一致只需返回NaN。 – khelwood