DoubleUtils:double数据计算的工具类,避免精度丢失
2017-12-27 11:33
691 查看
项目中用到的一个double数据处理工具类(●’◡’●)
/** * Double数据的操作 使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。 * 特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情。 * 这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,经常会因为精度丢失而导致程序处理流程出错。 */ public class DoubleUtils { /** * double 乘法 * * @param d1 * @param d2 * @return */ public static double mul(double d1, double d2) { BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); try { return bd1.multiply(bd2).doubleValue(); } catch (Exception e) { // 根据bugly观测,在进入GTOpMulPerfActivity页时有极小概率crash,故加上异常保护 // @see http://bugly.qq.com/detail?app=900010910&pid=1&ii=152#stack e.printStackTrace(); return 0; } } /** * double 除法 * * @param d1 * @param d2 * @param scale * 四舍五入 小数点位数 * @return */ public static double div(double d1, double d2, int scale) { // 当然在此之前,你要判断分母是否为0, // 为0你可以根据实际需求做相应的处理 BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); try { return bd1.divide(bd2, scale, BigDecimal.ROUND_DOWN).doubleValue(); } catch (Exception e) { e.printStackTrace(); return 0; } } }
相关文章推荐
- Java中用浮点型数据Float和Double进行精确计算时的精度问题
- Java中用浮点型数据Float和Double进行精确计算时的精度问题
- double等大数据精确计算工具类
- JAVA计算double精度丢失
- js 中将string转化为double,避免产生多位数和计算精度损失。
- Java中double数据类型计算会损失精度问题
- java中double、float类型计算精度丢失问题
- 14、Java中用浮点型数据Float和Double进行精确计算时的精度问题
- .Net 避免 float 转 double 丢失精度的办法
- float、double计算中精度丢失的处理
- double类型数据做加和操作时会丢失精度问题处理
- java中处理精度要求高的数据避免用double,用BigDecimal
- Java数值避免浮点型计算丢失精度问题
- BigDecimal -- 商业计算中避免丢失精度
- js 中将string转化为double,避免产生多位数和计算精度损失。
- java中double类型数据加减操作精度丢失问题及解决方法
- java中float/double计算丢失精度解决方案
- [ JAVA编程 ] double类型计算精度丢失问题及解决方法
- Java中用浮点型数据Float和Double进行精确计算时的精度问题
- double数据类型运算精度丢失问题