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