處理實體類中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