碰到一個例子,用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,如需轉載請自行聯系原作者