我在使用Big Decimal及其舍入后的格式时出现问题。我的输入价格为35.90,输出返回35.9
这就是我正在进行舍入的方式:
BigDecimal scaledResult = rs.getPrice().setScale(2, BigDecimal.ROUND_HALF_UP);
sc.setPrice(scaledResult);
返回35.9输出,即使我已将比例设置为两位小数。有任何想法吗?
答案 0 :(得分:2)
感谢大家的帮助,以下是我通过编写序列化器来解决它的问题:
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;
答案 1 :(得分:1)
您的四舍五入 工作正常。 原因,为什么您没有得到结尾的零?是因为您正在返回 响应为BigDecimal
,相反,您需要返回String
(也有人提到过)。
使用@JsonFormat
注释(在响应对象中的shape
变量之上,将STRING
作为BigDecimal
)的方法很简单。请参阅以下内容:
import com.fasterxml.jackson.annotation.JsonFormat;
class YourResponseObjectClass {
@JsonFormat (shape=JsonFormat.Shape.STRING)
private BigDecimal price;
}