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?

Respuestas a la pregunta(3)

Su respuesta a la pregunta