2011-10-20 15 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的幂。