Ошибки 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);
Есть идеи, что может быть причиной такого странного поведения?