【问题标题】:how to use a double value in power function如何在幂函数中使用双精度值
【发布时间】:2011-10-20 06:33:19
【问题描述】:

我试图找到一个值的幂。但问题是我的指数是一个小数值。幂函数不支持除 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)

请任何人帮我做这件事。

【问题讨论】:

  • 然后将int 类型作为参数传递或将double 类型转换为int
  • 不..我想使用相同的值。我的意思是我需要那个小数值。我不能对值进行四舍五入或类型转换。

标签: android


【解决方案1】:

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

【讨论】:

  • 我读了那个答案。但我什么都听不懂。我对 android 不太熟悉。你能简化一下吗。
【解决方案2】:

常识

考虑你想提高数字 x 的幂 y

如果都是整数:

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

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

所以我们先把y改成y = n + 1/d

的形式

如何做到这一点:

  • n = y 的楼层
  • d = 1 / (y - n)

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

  • x 次幂 n 使用通常的方法很简单
  • x 的幂 1/d 就是 xd 次根

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-25
    • 2017-02-25
    • 2016-08-17
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    相关资源
    最近更新 更多