1.场景在double中普通的加减是不行,比如0.3+0.6会等于0.899999999
这是由于计算机的精度导致的问题,一般都会转为BigDecimal 进行计算,但是他有个条件就是要转成字符串,否则一样会出现精度问题,new BigDecimal(double数据)进行计算的时候还是会出现0.899999的情况,甚至更精确。
2.提供一个java的工具类,用于计算
public class NumberCountUtil {
public NumberCountUtil() {
}
public static Double multiplyDouble(double v1, double v2) {
BigDecimal bigDecimal1 = new BigDecimal(String.valueOf(v1));
BigDecimal bigDecimal2 = new BigDecimal(String.valueOf(v2));
return bigDecimal1.multiply(bigDecimal2).doubleValue();
}
public static Double addDouble(double v1, double v2) {
BigDecimal bigDecimal1 = new BigDecimal(String.valueOf(v1));
BigDecimal bigDecimal2 = new BigDecimal(String.valueOf(v2));
return bigDecimal1.add(bigDecimal2).doubleValue();
}
public static Double reduceDouble(double v1, double v2) {
BigDecimal bigDecimal1 = new BigDecimal(String.valueOf(v1));
BigDecimal bigDecimal2 = new BigDecimal(String.valueOf(v2));
return bigDecimal1.subtract(bigDecimal2).doubleValue();
}
public static Double addDouble(Double d1, String d2) {
BigDecimal bigDecimal1 = new BigDecimal(String.valueOf(d1));
BigDecimal bigDecimal2 = new BigDecimal(d2);
return bigDecimal1.add(bigDecimal2).doubleValue();
}
public static void main(String[] args) {
System.out.println(multiplyDouble(7.0D, 0.1D));
}
}