一.去除0的方法
BigDecimal是處理高精度的浮點數運算的常用的一個類
當需要將BigDecimal中保存的浮點數值列印出來,特別是在頁面上顯示的時候,就有可能遇到預想之外的科學技術法表示的問題,
一般直接使用 BigDecimal.toString()方法即可以完成浮點數的列印,
如:
System.out.println( new BigDecimal("10000000000").toString());
但是,toString()方法輸出的字串并不能保證不是科學計數法,
不過在日常的使用中,用toString()方法輸出的就是普通的數字字串而非科學計數法,
直接這么寫:
System.out.println( new BigDecimal("100.000").toString());
程式的輸出即為: 100.000
如果我們希望去除末尾多余的0,那么我們應該這么寫:
System.out.println( new BigDecimal("100.000").stripTrailingZeros().toString());
其中,stripTrailingZeros()函式就是用于去除末尾多余的0的,但是此時程式的輸出為: 1E+2
是科學計數法,可能并不是我們想要的,
解決的方法很簡單,如果想要避免輸出科學計數法的字串,我們要用toPlainString()函式代替toString(),如:
System.out.println( new BigDecimal("100.000").stripTrailingZeros().toPlainString());
此時程式的輸出就為 100
二.添加注解統一處理
使用@JsonSerialize輸出
1.創建一個BigDecimal格式化工具
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.BigDecimal;
public class BigDecimalSerialize extends JsonSerializer<BigDecimal> {
@Override
public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializerProvider) throws IOException {
if (value != null && !"".equals(value)) {
gen.writeString(value.setScale(2, BigDecimal.ROUND_HALF_DOWN) + "");
} else {
gen.writeString(value + "");
}
}
}
2.在回傳的物體類對應的屬性上加上注解:
@JsonSerialize(using = BigDecimalSerialize.class)
private BigDecimal totalCost;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/548310.html
標籤:Java
上一篇:Mybatis
