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是想做阶乘运算的,求大佬指点

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

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了