java——double数据精度问题
2020-12-13 06:20
标签:VID double col oid 代码 小数 print rac 结果 代码:使用BigDecimal来代替double double测试示例: java——double数据精度问题 标签:VID double col oid 代码 小数 print rac 结果 原文地址:https://www.cnblogs.com/Tpf386/p/11175384.htmlpublic class 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);//四舍五入,保留2位小数
}
}
public class BigDecimalTest{
@test
public void test1(){
System.out.println(0.05+0.01);
System.out.println(1.0-0.42);
System.out.println(4.015*100);
System.out.println(123.3/100);
}
}
//运行结果
//0.060000000000005
//0.57000000000000001
//401.499999999999994
//1.2329999999999999