Я тестував граничні умови на якомусь коді, що включає a BigDecimal, і я помітив, що коли a BigDecimalініціалізується за допомогою String, "1e2147483647"він поводиться несподівано. Здається, воно має значення між 0і 1e-2147483647. Коли я намагаюся зателефонувати intValue(), я отримую NegativeArraySizeException. Слід зазначити, що 2147483647це максимальне значення цілого числа в моїй системі. Я роблю щось не так, чи це проблема BigDecimal?
BigDecimal test = new BigDecimal("1e2147483647");
test.compareTo(new BigDecimal(0)); //Returns 1
test.compareTo(new BigDecimal("1e-2147483647")); //Returns -1
test.intValue(); //Throws NegativeArraySizeException