我在一个程序中将两个巨大的 BigInteger 值相乘。它失败了。 BigInteger
的限制是什么?和BigDecimal
?
最佳答案
乘以大数时不会出现 NumberFormatException。如果生成的数字太大,您将得到一个神秘的 NegativeArraySizeException,因为数组的大小溢出。
您更有可能遇到内存不足错误。
BigInteger 的限制为 32 * 2^32-1 位或大约 2^(40 亿)。
如果您这样做,您可能会收到 NumberFormatException
- 从空字节[]创建一个 BigInteger
- 使用符号 < -1 或 > +1
- 尝试解析基数 >36 或 <2 的数字
- 字符串中包含非法数字。
当您收到异常时,您还应该查看消息和堆栈跟踪,因为这通常会为您提供真正的原因。
关于java - BigDecimal 和 BigInteger 的限制是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17945985/