对BigDecimal中multiply的阶乘方法的理解

 
    
package controlFlow;
 
import java.math.BigDecimal;
 
public class Factorial {
public static void main(String[] args) {
BigDecimal sum = new BigDecimal(0.0);
BigDecimal factorial = new BigDecimal(1.0);
int i = 1;
while (i <= 10)
{
sum = sum.add(factorial);
++i;
factorial = factorial.multiply(new BigDecimal(1.0 / i));
}
System.out.println("1+1/2!+1/3!...1/10的计算结果等于: \n" + sum);
}
}


下图为API截图:

其中:
参数:multiplicand 乘以此 BigDecimal 的值。 
    返回:this * multiplicand
    对scale的理解:
      11/100=0.11  其中,integer=11, scale=2
      12/100=0.120 其中,integer=120, scale=3
    对这句代码的理解: 1+1/2!+1/3!·····1/10!  
{
    在这个程序的while循环体里面
    fac先等于1 
    循环之后fac = 1×1/2 = 1/2!
    再循环之后 fac = 上面的 fac(1×1/2)×1/3 = 1/3!
    以此类推就可以得出阶乘 1+1/2!+1/3!·····1/10!的结果了。
}
  

你可能感兴趣的:(java)