DeserializationFeature.use_big_decimal_for_floats не сохраняет масштабJAVA

Программисты JAVA общаются здесь
Anonymous
DeserializationFeature.use_big_decimal_for_floats не сохраняет масштаб

Сообщение Anonymous »

Когда я десериализую номер JSON в BigDecimal , используя readtree , результаты не сохраняют шкалу, то есть он рассматривает 0,10 как 0,1 . С другой стороны, если я десериализуюсь с использованием readvalue , это делает Score Scale, возвращая BigDecimal с правильной шкалой 2:

Код: Выделить всё

    ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
JsonNode jsonNode = objectMapper.readTree("0.10");
BigDecimal numberFromReadTree = ((DecimalNode)jsonNode).decimalValue();
BigDecimal numberFromReadValue = objectMapper.readValue("0.10", BigDecimal.class);

System.out.println(numberFromReadTree); // Prints 0.1, i.e. scale = 1
System.out.println(numberFromReadValue); // Prints 0.10, i.e. scale = 2
Есть ли причина для этого очевидного несоответствия, и есть ли вариант, который я могу установить, чтобы сохранить шкалу такой же, как вход (т.е. для соответствия чтениям )?

Подробнее здесь: https://stackoverflow.com/questions/795 ... erve-scale

Вернуться в «JAVA»