//保留2位 x1 = x1.setScale(2,BigDecimal.ROUND_HALF_UP); ROUND_HALF_UP是我们常用的四舍五入
BigDecimal c = new BigDecimal(31.12); c = c.setScale(0,BigDecimal.ROUND_HALF_UP); System.out.println(c);//输出31 BigDecimal c = new BigDecimal(31.4999999999); c = c.setScale(0,BigDecimal.ROUND_HALF_UP); System.out.println(c);//输出31
BigDecimal a1 = new BigDecimal(31.12); a1 = a1.setScale(0,BigDecimal.ROUND_HALF_UP);//31 BigDecimal a2 = new BigDecimal("31"); BigDecimal a3 = new BigDecimal("31.00"); System.out.println(a1);//输出 31 System.out.println(a2);//输出 31 System.out.println(a3);//输出 31.00 System.out.println(a1.add(a2));//输出 62 System.out.println(a1.add(a3));//输出 62.00
// 执行减法操作 BigDecimal result = num1.subtract(num2);
BigDecimal a = new BigDecimal("10.5"); BigDecimal b = new BigDecimal("2.5"); BigDecimal c = a.multiply(b); System.out.println(c);
x1 = x1.divide(new BigDecimal("0.002736"),5,BigDecimal.ROUND_HALF_UP); //相除保留x位,四舍五入,防止除不尽。
BigDecimal a1 = new BigDecimal(31.12); a1 = a1.setScale(0,BigDecimal.ROUND_HALF_UP);//31 BigDecimal a2 = new BigDecimal("31"); BigDecimal a3 = new BigDecimal("31.00"); System.out.println(a1);//输出 31 System.out.println(a2);//输出 31 System.out.println(a3);//输出 31.00 System.out.println(a1.compareTo(a2));//输出0 System.out.println(a1.compareTo(a3));//输出0
//相除保留5位 按 四舍五入保留 (防止除不尽) x1 = x1.divide(new BigDecimal("0.002736"),5,BigDecimal.ROUND_HALF_UP);
BigDecimal d = new BigDecimal("31.12"); BigDecimal c = new BigDecimal(31.12); //不建议直接输入数字 如果非常要这样,请保留2位小数,这样就避免了。 System.out.println(c);//31.120000000000000994759830064140260219573974609375 System.out.println(d);//31.12 //修改代码 保留2位小数 就正常了。 BigDecimal d = new BigDecimal("31.12"); BigDecimal c = new BigDecimal(31.12); c = c.setScale(2,BigDecimal.ROUND_HALF_UP); System.out.println(c);//31.12 System.out.println(d);//31.12
Java中BigDecimal取整方法 BigDecimal bd = new BigDecimal("12.1");long l = bd.setScale( 0, BigDecimal.ROUND_UP ).longValue(); // 向上取整 long l = bd.setScale( 0, BigDecimal.ROUND_DOWN ).longValue(); // 向下取整 * 对于正数而言,ROUND_UP = ROUND_CEILING,ROUND_DOWN = ROUND_FLOOR
各个roundingMode详解如下:
ROUND_UP:非0时,舍弃小数后(整数部分)加1,比如12.49结果为13,-12.49结果为 -13
ROUND_DOWN:直接舍弃小数
ROUND_CEILING:如果 BigDecimal 是正的,则做 ROUND_UP 操作;如果为负,则做 ROUND_DOWN 操作 (一句话:取附近较大的整数)
ROUND_FLOOR: 如果 BigDecimal 是正的,则做 ROUND_DOWN 操作;如果为负,则做 ROUND_UP 操作(一句话:取附近较小的整数)
ROUND_HALF_UP:四舍五入(取更近的整数)
ROUND_HALF_DOWN:跟ROUND_HALF_UP 差别仅在于0.5时会向下取整
ROUND_HALF_EVEN:取最近的偶数
ROUND_UNNECESSARY:不需要取整,如果存在小数位,就抛ArithmeticException 异常
站长微信:xiaomao0055
站长QQ:14496453