Я тестував граничні умови на якомусь коді, що включає 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