Jamesyoung36
2017-11-05 14:52
采纳率: 21.1%
浏览 969

java bigdecimal的问题,求前辈指点

 import java.math.BigDecimal;

public class chapter_10_number_20 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        BigDecimal a=BigDecimal.valueOf(1);
        BigDecimal b=BigDecimal.valueOf(1);
        BigDecimal mark=BigDecimal.valueOf(1);
        BigDecimal sum=BigDecimal.valueOf(1);
        for(int i=100;i<=1000;i+=100)
        {
            for(int j=1;j<=i;j++)
            {
                a=BigDecimal.valueOf(1);
                b=BigDecimal.valueOf(1);
                for(int k=0;k<j;k++)
                {
                    a=a.multiply(b);
                    b=b.add(mark);
                }
                b=BigDecimal.valueOf(1);
                a=b.divide(a);
                sum=sum.add(a);
            }
            System.out.print("i="+i+" e="+a);
        }
    }

}
a=b.divide(a);到这一步a就是0了,所以报错,为什么我的a是0?原本a是想做阶乘运算的,求大佬指点
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • threenewbee 2017-11-05 16:08

    b.divide(a);这里b是除数,a是被除数。b=1,当然结果是0了。

    评论
    解决 无用
    打赏 举报
  • warmcore 2017-11-06 00:39
    public BigDecimal divide(BigDecimal divisor)返回一个 BigDecimal,其值为 (this / divisor),其首选标度为 (this.scale() - divisor.scale());如果无法表示准确的商值(因为它有无穷的十进制扩展),则抛出 ArithmeticException。 
    
    参数:
    divisor - 此 BigDecimal 要相除的值。 
    返回:
    this / divisor 
    
    
    

    在上面你给b赋值为1,用1除以循环后的a,这时的a是一个大于1的数,那么把它们相除的结果再赋值给a,a不就等于0了

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题