Java的BigDecimal

    技术2022-07-11  99

    BigDecimal的正确使用方式

    1、精度丢失问题2、正确的初始化方式3、正确的使用方式

    1、精度丢失问题

    1.由于浮点型变量在计算时会出现丢失精度的问题,所以需要用钱的地方要用BigDecimal 2.BigDecimal b = new BigDecimal(1.0),这种初始化方式还是会发生精度丢失问题

    2、正确的初始化方式

    BigDecimal b1 = new BigDecimal("0.1"); BigDecimal b2= BigDecimal.valueOf(0.1);

    3、正确的使用方式

    publicclass BigDecimalUtil { public static BigDecimal add(double v1, double v2) { // v1 + 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) { // v1 - 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) { // v1 * 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) { // v1 / v2 BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); // 2 = 保留小数点后两位 ROUND_HALF_UP = 四舍五入 return b1.divide(b2, 2, BigDecimal.ROUND_HALF_UP);// 应对除不尽的情况 } }
    Processed: 0.010, SQL: 9