2016-02-10 80 views
2

我是Java新手。我正在編寫一個小程序來計算一個數字的值,當我遇到一個負數增加到一個小數指數的問題時。不知道如何使用Math.pow()

System.out.println(Math.pow(-8, 1/3f)); 

輸出是NaN,而我期待-2?

我在做什麼錯?有沒有其他辦法來計算這樣的問題?

任何幫助表示讚賞。

+0

這會得到一個複數。因此它給了NaN。閱讀[這個問題](http://stackoverflow.com/questions/20250453/why-math-powa-b-is-nan-when-a-is-a-negative-number-and-b-isa-a-非整數) –

+0

我期待(-2)^ 3 = -8,所以答案是-2? –

+1

在這種情況下,它可能會返回一個真實的數字,但是一般情況下'(-n)^(1/m)'的結果空間是一些複數,所以規範說它應該一致只需返回NaN。 – khelwood

回答

2

這種情況在documentation中描述。

如果第一個參數是有限且小於零。 < ...> 如果第二個參數是有限的而不是一個整數,那麼結果是NaN。

據我所知在Java標準庫中沒有辦法做到這一點,所以你必須手動實現它。

+0

謝謝。我想我必須將兩個案例分爲正面和負面的基礎? –

+1

是的,但無論如何,發現負面基地的權力似乎不是一個微不足道的問題。 – Kuvaldis