处理实体类中double类型数据的小数位数

作用:返回给前端的实体类中的double类型的数据,需要保留两位小数,但是不足两位不能补0,如double a = 648.0000056,要返回648,而不能返回648.00。

实现方法:

1.首先添加封装一个工具类,代码如下:

package com.enn.zykzq.fastUtil;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.Objects;

/**
 * @author zhangyakun
 * @date 2020/6/15 15:48
 */
//修改JsonSerializer<Double> 到需要的类型,默认为JsonSerializer,参数为Object value
public class JsonSerializerUtils extends JsonSerializer<Double> {
    @Override
    public void serialize(Double value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        if (Objects.nonNull(value)) {
            //保留2位小数#代表末位是0舍去
            DecimalFormat decimalFormat = new DecimalFormat("0.##");
            //四舍五入
            decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
            String result = decimalFormat.format(value);
            jsonGenerator.writeNumber(Double.valueOf(result));
        } else {
            jsonGenerator.writeNumber(Double.valueOf(0));
        }
    }
}

2.然后直接在需要处理的实体类中的double类型的数据上面加上注解即可

    //用法:实体类添加
    @JsonSerialize(using = JsonSerializerUtils.class)
    private double processMoney;

 

posted @ 2020-06-16 09:33  暮影微凉  阅读(3053)  评论(0)    收藏  举报