Errores BigDecimal de Java con el constructor de cadenas para redondear con ROUND_HALF_UP
Estoy tratando de implementar un nuevo redondeo de grados para la clase BigDecimal, y estoy recibiendo un posible error, probablemente deba hacer algo mal. El siguiente código expone mi problema:
public static void main(String[] args) throws IOException {
BigDecimal valDouble = new BigDecimal(0.35);
valDouble = valDouble.setScale(1, BigDecimal.ROUND_HALF_UP);
System.out.println(valDouble.doubleValue()); // prints 0.3
BigDecimal valString = new BigDecimal(new String("0.35"));
valString = valString.setScale(1, BigDecimal.ROUND_HALF_UP);
System.out.println(valString.doubleValue()); // prints 0.4
}
Mi duda aquí es, ¿BigDecimal es diferente para los constructores de cadenas y dobles?
No puedo entender este 'error', al menos, solo usé una cadena concat para 'resolverlo', como se muestra a continuación:
BigDecimal valDouble = new BigDecimal("" + 0.35);
¿Alguna idea de qué podría estar causando este extraño comportamiento?