【问题标题】:Float value gets too small浮点值变得太小
【发布时间】:2015-06-10 12:07:45
【问题描述】:

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

(2^k)/(k!)

我正在使用 Java 并使用浮点数,但是当 k 变大时会出现问题。随着它变大,等式的底部大大大于顶部。因此,您可以想象等式的极限将变为 0。但随着数字变小,它会超过 1 * 10^-31,一旦它似乎超过了该值,浮点数似乎会增加。我假设这个数字太小了,一旦它通过10^-31 Java 就会做出反应并使其成为一个更大的值。类似于如果一个浮点值超过Float.MAX_VALUE,它会转到-Float.MAX_VALUE。有谁知道如何解决这个问题?它弄乱了我想要完成的结果。

谢谢。

【问题讨论】:

  • 如果你真的需要计算这么大的值,使用BigInteger类或BigDecimal怎么样?
  • 问题不是“那么大”的价值,而是“那么小”的价值。此外,我正在使用 Java 的图形库来绘制等式值大小的线条。所以我也需要能够绘制价值
  • 这是我需要完成的任务。我在 k 处绘制方程结果的长度。我不知道你的意思是不需要计算k。是的,我需要它来处理它所说的等式......我正在从 1 运行 k 到 n,其中 n 是指定的任何值。

标签: java limit minimum


【解决方案1】:

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

2/1

对于 k=2,我们有

2/1 * 2/2

对于 k=3,我们有

2/1 * 2/2 * 2/3

等等。请注意,实际上不需要计算完整的分母。

【讨论】:

  • 我误会了,我以为你说的是​​k!可以简化。所以你说要简化最终结果。
  • 我是说你可以用任何你想要的方式计算最终结果。不要选择最糟糕的方式。您可以按您喜欢的任何顺序或组合进行乘法和除法。
  • 对,我只是没想过要查看等式的结果并将其简化。谢谢!
猜你喜欢
  • 2017-10-27
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多