BigDecimal和BigInteger的限制是什么?

时间:2013-07-30 11:36:10

标签: java limit biginteger bigdecimal numberformatexception

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

2 个答案:

答案 0 :(得分:5)

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

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

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

如果你

,你可以获得NumberFormatException
  • 从空字节[]
  • 创建一个BigInteger
  • 使用signum< -1或> 1
  • 尝试解析基数> 36或< 2
  • 有一个非法数字字符串。

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

答案 1 :(得分:1)

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