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