我正在尝试打印出我正在使用的等式的值。等式是:
(2^k)/(k!)
我正在使用Java并使用Floats,但是当k变大时我遇到了问题。随着它变大,等式的底部明显大于顶部。因此,你可以想象方程的极限是0.但随着数字变小,它越过1 * 10^-31
,一旦它似乎传递了该值,浮动似乎会增加。我假设数字变得太小,一旦它通过10^-31
Java做出反应并使其成为更大的值。与浮动值超过Float.MAX_VALUE
的情况类似,它会转到-Float.MAX_VALUE
。有谁知道如何解决这个问题?它搞砸了我想要完成的事情的结果。
谢谢。
答案 0 :(得分:0)
让我们看看(2^k)/(k!)
。对于k = 1,我们有:
2/1
对于k = 2,我们有
2/1 * 2/2
对于k = 3,我们有
2/1 * 2/2 * 2/3
等等。请注意,从来没有必要实际计算完整的分母。