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了