Estaba probando condiciones de límite en algún código que involucraba a BigDecimal, y noté que cuando BigDecimalse inicializa a con String, "1e2147483647"se comporta inesperadamente. Parece tener un valor entre 0y 1e-2147483647. Cuando intento llamar intValue(), obtengo un NegativeArraySizeException. Debo notar que 2147483647es el valor máximo de un número entero en mi sistema. ¿Estoy haciendo algo mal o es un problema 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