处理实体类中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;

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM