更新时间:2022-09-10 07:56:49
碰到一个例子,用while循环方法计算1+1/2!+1/3!+...1/20!
刚开始的时候以为阶乘能直接写,像这样
1
2
3
4
5
6
7
8
9
10
11
12
|
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文档没把这个用法给弄清楚。一知半解
先把源码贴出来,慢慢琢磨
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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
2
|
1 + 1 / 2 !+ 1 / 3 !··· 1 / 20 !的计算结果等于:
1.7182818284590452236725888 .............
|