碰到一个例子,用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
.............
|
本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1302890,如需转载请自行联系原作者