double运算的精度问题
import java.math.BigDecimal;
public class TestDouble {
public static void main(String[] args) {
double d1 = div(20130708154752d,1000000000000d);
double d2 = 16000d;
System.out.println(d1);
System.out.println(sum(d1,d2));
}
public static double sum(double d1,double d2){
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.add(bd2).doubleValue();
}
public static double div(double v1,double v2){
return div(v1,v2,12);
}
public static double div(double v1,double v2,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
运行结果是:
20.130708154752
16020.130708154751
如何能避免精度损失的问题?
...全文
相关推荐
高精度算术运算工具类,解决double类型运算精度丢失问题BigDecimal
高精度算术运算工具类,解决double类型运算精度丢失问题BigDecimal
Java Double 精度问题总结
使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。 特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情。 这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,经常会因为精度丢失而导致程序处理流程出错。
解决java数值范围以及float与double精度丢失的问题
下面小编就为大家带来一篇解决java数值范围以及float与double精度丢失的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
java中double类型运算结果异常的解决方法
下面小编就为大家带来一篇java中double类型运算结果异常的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java用BigDecimal解决double类型相减时可能存在的误差
主要介绍了Java用BigDecimal解决double类型相减时可能存在的误差,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


Java SE
