四舍五入后的大十进制格式

Big Decimal formatting after rounding

我对大数及其四舍五入后的格式有疑问。我的输入价格为 35.90,输出价格为 returns 35.9

这就是我四舍五入的方式:

BigDecimal scaledResult = rs.getPrice().setScale(2, BigDecimal.ROUND_HALF_UP);
sc.setPrice(scaledResult);

其中 returns 35.9 输出,即使我已将比例设置为小数点后两位。有任何想法吗?

感谢大家的帮助,这是我通过编写序列化程序解决它的方法:

public class BigDecimalSerializer extends JsonSerializer<BigDecimal> {
    @Override
    public void serialize(BigDecimal value, JsonGenerator jgen, SerializerProvider provider) throws IOException,
            JsonProcessingException {
        jgen.writeString(value.setScale(2, BigDecimal.ROUND_HALF_UP).toString());
    }
}

我模型的字段:

@JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal price;

您的四舍五入工作正常。你没有得到尾随零的 原因 returning 响应作为BigDecimal相反你需要到return作为String(正如其他人所提到的) ).

有一种简单的方法可以使用 @JsonFormat 注释 shape 作为 STRINGBigDecimal 之上响应对象中的变量。参考如下:

 import com.fasterxml.jackson.annotation.JsonFormat;

  class YourResponseObjectClass {

    @JsonFormat (shape=JsonFormat.Shape.STRING)
    private BigDecimal price;

 }