Java中double类型除法返回Infinity问题。

luo_dream 2017-03-11 02:13:53
今天在我弟数学书上看到了一道题,求1+1/2!+1/3!+1/4!+.....1/n!。一时兴起用java写了个程序,结果发现当n>30的时候返回Infinity。有没有谁知道是什么问题

//返回处理最终结果,4舍5入保留5位小数
public static double fact(int t) throws NotPositiveIntegerException{
System.out.println("start caculate:" + System.currentTimeMillis());
double result = Summarize(t);
/*System.out.println(result);
BigDecimal b = new BigDecimal(result);
double f = b.setScale(5, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println("end caculate:" + System.currentTimeMillis());
return f;
*/
return result;

}


//求和
public static double Summarize(int t) {
if(t <=0 ){
return 0;
}
double ret;
if(t == 1){
return 1.0;
}else{
ret = 1.0/factorial(t) + Summarize(t-1);
}
return ret;
}

//分母求阶乘
public static int factorial(int i){
int result;
if(i == 1){
return 1;
}else{
result = i * factorial(i-1);
}
return result;
}





...全文
1060 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
墨笙弘一 2017-03-11
  • 打赏
  • 举报
回复
貌似和js中的类似吧 超出范围就会出现identity
luo_dream 2017-03-11
  • 打赏
  • 举报
回复
已经解决了,是我问题,涉及大数据运算时要用BigNumber。新手们可以看看,注意下。
luo_dream 2017-03-11
  • 打赏
  • 举报
回复
忘记说了,jdk是1.8的。

62,615

社区成员

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

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