我在一个程序中将两个巨大的 BigIntegervalues 相乘。它失败了。BigInteger
和的限制是BigDecimal
什么?
问问题
9519 次
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 回答