Java BigDecimal可能溢出的Bug

26 浏览
0 Comments

Java BigDecimal可能溢出的Bug

我正在测试涉及BigDecimal的代码的边界条件,并且我注意到当使用字符串"1e2147483647"初始化BigDecimal时,它的行为出乎意料。它似乎在01e-2147483647之间有一个值。当我尝试调用intValue()时,会抛出NegativeArraySizeException异常。我应该指出,在我的系统上,2147483647是整数的最大值。我是做错了什么,还是这是BigDecimal的问题?

BigDecimal test = new BigDecimal("1e2147483647");
test.compareTo(new BigDecimal(0));  //返回1
test.compareTo(new BigDecimal("1e-2147483647"));  //返回-1
test.intValue();  //抛出NegativeArraySizeException异常

0