【问题标题】:Long vs BigInteger长与大整数
【发布时间】:2015-07-31 13:58:22
【问题描述】:

我知道java.lang.Longjava.math.BigInteger 都可以容纳非常大的自然数。

我也知道 Long 的最大值,但是 BigInteger 的最大值是多少?

除了容量之外,BigInteger 在处理仍然在 Long 范围内的一般大整数时会表现得更好吗?

问题

唯一的考虑是:我的价值对于Long来说是否太大?

【问题讨论】:

  • BigInteger 能够保存比 Long 大得多的数字。 stackoverflow.com/questions/12693273/…
  • 如果 Long 足够,请使用 Long。如果没有,请使用 BigInteger。
  • 在任何数字类型之间进行选择的方式相同。有问题的值是否可能超过特定类型的大小?如果是这样,请使用更大的类型。
  • @Samha 很棒的重写 - 谢谢!
  • @David 我不会说“任何数字类型”都是这种情况。以DoubleBigDecimal 为例。如果精度很关键,您将使用BigDecimal,即使Double 的值范围就足够了。

标签: java long-integer biginteger


【解决方案1】:

BigInteger 能够保存比 Long 大得多的数字。 BigInteger 似乎能够容纳 (2 ^ 32) ^ Integer.MAX_VALUE,尽管这取决于实现(而且,即使在实现中真正无限,最终也会有物理资源限制)See explanation here

Long 的范围是 [-9,223,372,036,854,775,808, +9,223,372,036,854,775,807]。

Long 会比 BigInteger 执行得更好,因此这实际上取决于您的值的大小。如果它们都低于 Long 的最大值,那么不使用 Long 是没有意义的。如果有任何大于 Long 最大值,您几乎必须使用 BigInteger。

【讨论】:

  • 请注意,(2 ^ 32) ^ Integer.MAX_VALUE 是依赖于实现的。理论上 BigInteger 没有最大值。
  • 那么,这是唯一的考虑:我的价值对于 Long 来说是否太大?
  • @FritzDuchardt 据我所知,是的。 Long 肯定会比 BigInteger 表现更好,因此您的值的大小确实是决定因素。
猜你喜欢
  • 2011-01-29
  • 2014-12-30
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多