2011-10-20 16 views
2

我正在嘗試尋找一個值的功率。但問題是我的指數是一個小數值.power函數不支持int以外的任何數據類型。如何在電源功能中使用雙精度值

BigDecimal fd_returns_at_time_of_replace=(BigDecimal.valueOf(capitalDiff).multiply((BigDecimal.valueOf((long)constant1+.09)).pow(temp))); 

這裏temp是一個小數值。下面是我得到的eror消息。

The method pow(int) in the type BigDecimal is not applicable for the arguments (double) 

請有人幫我做到這一點。

+0

然後傳遞'int'類型作爲參數或類型強制轉換'double'到'int'。 –

+0

可能的重複http://stackoverflow.com/questions/3579779/how-to-do-a-fractional-power-on-bigdecimal-in-java – spatulamania

+0

不..我想用相同的價值。我的意思是我需要那個小數值。我不能輪迴或者改變價值。 –

回答

1

常識

考慮要提高數X到電源ÿ

如果兩個都是整數:

for(int i=0 ; i<y ; i++) 
    answer = answer * x; 

問題只有當是一個小數!

所以我們先改變Ÿy的形式= N + 1次/ d

如何做到這一點:

  • N =地板Y的
  • d = 1 /(y - n) < <整數

現在的x^Y = X^N * 的x^1/d

  • X使用通常的方法
  • X到電源Ñ是簡單電源1/d簡單說就是d th根x

注意:您可以通過減少人類對付d整數引起的誤差因素增加功能的精度。怎麼樣! 1/d可乘以10的冪。