2015-04-06 82 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