对BigDecimal中multiply的阶乘方法的理解
2016-05-16 08:19
323 查看
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!的结果了。
}