碰到一个例子,用while循环方法计算1+1/2!+1/3!+...1/20!
刚开始的时候以为阶乘能直接写,像这样
package com.lixiyu; public class Count1 { public static void main(String[] args){ int i=1; int sum=0; while(i<=20){ sum+=(1/i!); i++; } System.out.println("sum="+sum); } }
就一直在阶乘的位置“!”提示错误:java Syntax error on token "!", delete this token
后来想是不是 !不能直接拿来用的,谷歌一下,发现原来要调用数学式的一个包:java.math.BigDecimal
不过看了API文档没把这个用法给弄清楚。一知半解
先把源码贴出来,慢慢琢磨
package com.lixiyu; import java.math.BigDecimal; public class Count1 { public static void main(String args[]) { BigDecimal sum = new BigDecimal(0.0); // 和 BigDecimal factorial = new BigDecimal(1.0); // 阶乘项的计算结果 int i = 1; // 循环增量 while (i <= 20) { sum = sum.add(factorial); // 累加各项阶乘的和 ++i; // i加1 factorial = factorial.multiply(new BigDecimal(1.0 / i)); // 计算阶乘项 } System.out.println("1+1/2!+1/3!···1/20!的计算结果等于:\n" + sum); // 输出计算结果 } }
编译运行结果:
1+1/2!+1/3!···1/20!的计算结果等于: 1.7182818284590452236725888.............