公司前后端协定,后端数据库中对于价格落库的时候统一单位: 分,通过接口返回给前端则统一转换成元,比如商品价格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 (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 = (fen) ? DEFAULT_VALUE : new BigDecimal(fen).divide(DIVIDENUM).toString();
(yuan);
}
}
然后只需要在给前端的接口的实体类中相关字段的get方法加上注解 @JsonSerialize(using = )
具体用法:
@ApiModel
public class Test implements Serializable {
@ApiModelProperty("价格")
private Integer price;
@JsonSerialize(using = )
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
= price;
}
}
哈哈,其实效果是一样的,后面方法用的人应该少些,所以会稍显B格,反正我是这么认为的!