四舍五入后的大十进制格式
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
作为 STRING
在 BigDecimal
之上响应对象中的变量。参考如下:
import com.fasterxml.jackson.annotation.JsonFormat;
class YourResponseObjectClass {
@JsonFormat (shape=JsonFormat.Shape.STRING)
private BigDecimal price;
}
我对大数及其四舍五入后的格式有疑问。我的输入价格为 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
作为 STRING
在 BigDecimal
之上响应对象中的变量。参考如下:
import com.fasterxml.jackson.annotation.JsonFormat;
class YourResponseObjectClass {
@JsonFormat (shape=JsonFormat.Shape.STRING)
private BigDecimal price;
}