浮动值太小

时间:2015-04-06 04:35:40

标签: java limit minimum

我正在尝试打印出我正在使用的等式的值。等式是:

(2^k)/(k!)

我正在使用Java并使用Floats,但是当k变大时我遇到了问题。随着它变大,等式的底部明显大于顶部。因此,你可以想象方程的极限是0.但随着数字变小,它越过1 * 10^-31,一旦它似乎传递了该值,浮动似乎会增加。我假设数字变得太小,一旦它通过10^-31 Java做出反应并使其成为更大的值。与浮动值超过Float.MAX_VALUE的情况类似,它会转到-Float.MAX_VALUE。有谁知道如何解决这个问题?它搞砸了我想要完成的事情的结果。

谢谢。

1 个答案:

答案 0 :(得分:0)

让我们看看(2^k)/(k!)。对于k = 1,我们有:

2/1

对于k = 2,我们有

2/1 * 2/2

对于k = 3,我们有

2/1 * 2/2 * 2/3

等等。请注意,从来没有必要实际计算完整的分母。