如何在幂函数中使用double值

时间:2011-10-20 06:33:20

标签: android

我试图找到一个值的力量。但问题是我的指数是一个小数值.power函数不支持除int之外的任何数据类型。

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

这里temp是一个小数值。下面是我得到的错误信息。

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

请有人帮我这样做。

2 个答案:

答案 0 :(得分:1)

BigDecimal.pow()只需int。要查看编​​写接受double的BigDecimal.pow()的一个很酷的示例,请参阅此问题How to do a fractional power on BigDecimal in Java?

答案 1 :(得分:1)

常识

考虑您要将数字 x 提升为 y

如果两者都是整数:

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

仅当 y 是小数时才会出现问题!

所以我们先将 y 更改为 y = n + 1 / d

的形式

如何做到这一点:

  • n = y的楼层
  • d = 1 /(y-n)&lt;&lt;整数

现在 x ^ y = x ^ n * x ^ 1 / d

    使用通常的方法
  • x 到电源 n 很简单
  • x 到电源 1 / d 只是 d x

注意:您可以通过减少makind d 整数引起的误差因子来提高函数的精度。怎么样! 1 / d 可以乘以10的幂。