请教一个幂运算的问题.

jsjlw 2009-12-29 07:52:44
		double a = 1.2;
double b = 10000;


我现在要求a的b次方.. 用for循环的话效率太慢了(b可能更大).用Math.pow(a, b)话就报无穷大Infinity/ 大家谁有什么好的解决办法么??

今晚需用..有好的的马上揭帖
...全文
167 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dazzlingwinter 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 bao110908 的回复:]
使用对数进行计算,计算方法如下:


[/Quote]
完美
不用这个方法的话,就要用大数来存计算结果了
树成 2009-12-29
  • 打赏
  • 举报
回复
高中二年级数学知识,对数的换底公式而已。
b07522 2009-12-29
  • 打赏
  • 举报
回复
不懂!
  • 打赏
  • 举报
回复
使用对数进行计算,计算方法如下:

  • 打赏
  • 举报
回复
import java.math.BigDecimal;
import java.math.MathContext;

public class VeryBigDecimal {

public static void main(String[] args) {
BigDecimal bd = pow(1.2, 1000);
System.out.println(bd);

BigDecimal pp = new BigDecimal("1.2").pow(1000, MathContext.DECIMAL128);
System.out.println(pp.toEngineeringString());
}

// 这样只能粗略的计算一下,仅能保证 12 位的精度,但是计算速度是很快很快的,
public static BigDecimal pow(double base, int exponent) {
double p = Math.log10(base) * exponent;
double b = Math.pow(10, p % 1);
return new BigDecimal(b + "E" + (int)p);
}
}
jsjlw 2009-12-29
  • 打赏
  • 举报
回复
算债券的利率.可能是三十年的债券.所以要(1+利率)^30*365 这样要么算不出来.要么就卡住了.
用excel就轻松算出来.真郁闷!!!
番茄配黄瓜 2009-12-29
  • 打赏
  • 举报
回复
up
借我那把枪吧 2009-12-29
  • 打赏
  • 举报
回复
这个真不会
jsjlw 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhoupuyue 的回复:]
Java codedouble a=1.2;double b=10000;
BigDecimal bd=new BigDecimal(String.valueOf(a));
BigDecimal result= bd.pow((int)b);
System.out.println(result.toString());
[/Quote]

这个方法不行.b=5000的时候就卡住了.得不到结果.
阿_布 2009-12-29
  • 打赏
  • 举报
回复

double a = 1.2;
double b = 10000;
BigDecimal bd = new BigDecimal(String.valueOf(a));
BigDecimal result = bd.pow((int)b);
System.out.println(result.toString());
amdgaming 2009-12-29
  • 打赏
  • 举报
回复
BigDecimal试试啊。。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧