2

我在一个程序中将两个巨大的 BigIntegervalues 相乘。它失败了。BigInteger和的限制是BigDecimal什么?

4

2 回答 2

5

您不会得到 NumberFormatException 乘以大数。如果产生的数字太大,您将得到一个神秘的 NegativeArraySizeException,因为数组的大小溢出。

您更有可能遇到内存不足错误。

BigInteger 的限制为 32 * 2^32-1 位或大约 2^(40 亿)。

你可以得到一个 NumberFormatException 如果你

  • 从空字节创建一个 BigInteger []
  • 使用符号 < -1 或 > +1
  • 尝试解析基数 > 36 或 < 2 的数字
  • 有一个带有非法数字的字符串。

当您遇到异常时,您还应该查看消息和堆栈跟踪,因为这通常会为您提供真正的原因。

于 2013-07-30T11:37:37.890 回答
1

不应该有限制,除了内存,但可能有,根据类的实现(例如,某些字段可能是 int 或 long)。

于 2013-07-30T11:48:43.497 回答