2015-04-06 77 views
0

我試圖打印出我正在使用的公式的值。方程式是:浮點值變得太小

(2^k)/(k!) 

我正在使用Java和使用浮動,但我有一個問題,當k變大時發生。隨着它變得更大,等式的底部比頂部大得多。所以你可以想象這個方程的極限是0,但是隨着數量變小,它會超過1 * 10^-31,而且一旦似乎超過了這個值,浮點數似乎會增加。我認爲這個數字太小了,一旦它通過,10^-31 Java會作出反應並使其成爲一個更大的值。類似於如果浮動值超過Float.MAX_VALUE,它將變爲-Float.MAX_VALUE。有誰知道如何解決這個問題?它正在搞亂我想要完成的結果。

謝謝。

+1

如果你真的需要計算一個很大的值,那麼使用'BigInteger'類或'BigDecimal'如何? – 2015-04-06 04:38:09

+0

事情是它不是一個「大」的價值,它的價值「那麼小」。此外,我使用Java的圖形庫來繪製等式值大小的線。所以我需要能夠繪製出價值 – Jmrapp 2015-04-06 04:40:39

+0

這是我需要處理的任務。我正在畫k的方程結果的長度。我不知道你的意思是不需要計算k。是的,我需要它的方程,就像它說的那樣...我運行k從1到n,其中n是指定的任何值。 – Jmrapp 2015-04-06 04:45:51

回答

0

讓我們看看(2^k)/(k!)。對於k = 1,我們有:

2/1 

對於k = 2,我們具有

2/1 * 2/2 

對於k = 3,我們有

2/1 * 2/2 * 2/3 

等。請注意,從來沒有任何需要真正計算完整分母。

+0

我誤解了,我以爲你在說k!可以簡化。所以你說要簡化最終結果。 – Jmrapp 2015-04-06 04:51:19

+0

我在說你可以用任何你想要的方式來計算最終結果。不要選擇最糟糕的方式。你可以按照你喜歡的任何順序或組合進行乘法和除法。 – 2015-04-06 04:51:53

+0

對,我只是沒有想到要看看方程的結果並簡化它。謝謝! – Jmrapp 2015-04-06 04:55:39