BigDecimal和BigInteger的限制是什么?
我在一个程序中将两个巨大的BigInteger值相乘。 它失败了。 BigInteger
和BigDecimal
的限制是什么?
你不会得到NumberFormatException乘以大数。 如果产生的数字太大,当数组大小溢出时,你会得到一个神秘的NegativeArraySizeException。
您更有可能出现内存不足错误。
对于BigInteger,限制为32 * 2 ^ 32-1位,或约为2 ^(40亿)。
如果你,你可以得到一个NumberFormatException
- 从空字节[]创建一个BigInteger
- 使用signum <-1或> +1
- 尝试解析基数> 36或<2的数字
- 有一个非法数字的字符串。
当你得到一个exception时,你也应该查看消息和堆栈跟踪,因为这通常会给你真正的原因。
应该没有限制,除了内存,但可能有,根据类的实现(例如,某些字段可能有int或long)。