BigDecimal
当我使用将 JSON 数字反序列化为 时readTree
,结果不会保留比例,即它会被视为0.10
。0.1
另一方面,如果我使用 进行反序列化readValue
,它会保留比例,返回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
这种明显的不一致有什么原因吗?我是否可以设置一个选项来保持比例与输入相同(即与之一致readValue
)?