1.在電商項目中進行運算的時候,會出現一些丢失精度的問題,這是不允許的,一下是測試精度的一個小方法:
在控制台上輸出的資料,精度有問題;
2.在effective java這本書中提到,float、double這些精度的計算隻能用在科研領域中一些細小精度可以忽略的方面,在商業計算中一定是用BigDecimal,
BigDecimal一共有四個構造方法,
3.資料庫中存儲的是double、float經常進行轉換的話會比較麻煩,是以寫一個工具類這樣友善:
package com.mmall.util;
import java.math.BigDecimal;
public class BigDecimalUtil {
private BigDecimalUtil(){
}
public static BigDecimal add(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2);
}
public static BigDecimal sub(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2);
}
public static BigDecimal mul(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2);
}
public static BigDecimal div(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,2,BigDecimal.ROUND_HALF_UP);//四舍五入,保留兩位小數
//除不盡的情況
}
}