BigDecimal和BigInteger的限制是什么?

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

你不会得到NumberFormatException乘以大数。 如果产生的数字太大,当数组大小溢出时,你会得到一个神秘的NegativeArraySizeException。

您更有可能出现内存不足错误。

对于BigInteger,限制为32 * 2 ^ 32-1位,或约为2 ^(40亿)。

如果你,你可以得到一个NumberFormatException

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

当你得到一个exception时,你也应该查看消息和堆栈跟踪,因为这通常会给你真正的原因。

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