我试图找到一个值的力量。但问题是我的指数是一个小数值.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)
请有人帮我这样做。
答案 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
的形式如何做到这一点:
现在 x ^ y = x ^ n * x ^ 1 / d
注意:您可以通过减少makind d 整数引起的误差因子来提高函数的精度。怎么样! 1 / d 可以乘以10的幂。