Я тестировал граничные условия для некоторого кода с использованием 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