如何优雅把分不失精度转换成元
公司前后端协定,后端数据库中对于价格落库的时候统⼀单位: 分,通过接⼝返回给前端则统⼀转换成元,⽐如商品价格25.68,数据库落库则是2568,但是接⼝给前端返回则需要25.68;
在转换的过程中需要注意精度的丢失,所以直接摒弃double,float采⽤BigDecimal类型,当然你写个⽅法类,⾥⾯加上下⾯的⽅法:
private static final BigDecimal DIVIDENUM = new BigDecimal(100);
private static final String DEFAULT_VALUE = "0";
public static String RMBFenToYuan(Integer fen){
return Objects.isNull(fen) ? DEFAULT_VALUE : new BigDecimal(fen).divide(DIVIDENUM).toString();
}
然后每次在有需要的时候调⽤即可。
如果你想B格稍微⾼⼀些,⾛路带点风的话,你还可以这么实现:
final public class FenToYuanForRMB extends JsonSerializer<Integer> {
private static final BigDecimal DIVIDENUM = new BigDecimal(100);
private static final String DEFAULT_VALUE = "0";
@Override
public void serialize(Integer fen, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
String yuan = Objects.isNull(fen) ? DEFAULT_VALUE : new BigDecimal(fen).divide(DIVIDENUM).toString();
jsonGenerator.writeString(yuan);
}
}
然后只需要在给前端的接⼝的实体类中相关字段的get⽅法加上注解 @JsonSerialize(using = IntegerF
enToStringYuan.class)
bigdecimal转换为integer具体⽤法:
@ApiModel
public class Test implements Serializable {
@ApiModelProperty("价格")
private Integer price;
@JsonSerialize(using = FenToYuanForRMB.class)
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
}
哈哈,其实效果是⼀样的,后⾯⽅法⽤的⼈应该少些,所以会稍显B格,反正我是这么认为的!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论