Ошибки Java BigDecimal с конструктором String в округлении с ROUND_HALF_UP

Я пытаюсь реализовать новое округление класса до класса BigDecimal, и я получаю возможную ошибку, возможно, я что-то делаю не так Код ниже разоблачает мою проблему:

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
}

Здесь я сомневаюсь, отличается ли BigDecimal для конструкторов типа double и String?

Я не могу "понять" эту ошибку ", по крайней мере, я просто использовал простую строку concat для" решения " это, как показано ниже:

BigDecimal valDouble = new BigDecimal("" + 0.35);

Есть идеи, что может быть причиной такого странного поведения?

Ответы на вопрос(3)

Ваш ответ на вопрос