java中的BigDecimal对象,处理金额时要加倍小心
BigDecimal bd1 = new BigDecimal("840.9"); BigDecimal bd2 = new BigDecimal("12");//在创建BigDecimal时应该使用String或int,不能使用double BigDecimal bd3 = new BigDecimal(new Double(840.9).toString()); System.out.println(bd1); System.out.println(bd2); System.out.println(bd3); System.out.println(bd1.divide(bd2,2,RoundingMode.HALF_UP));//四舍五入
普通的double和float是不能用来表示金额等精确小数的,只能用来表示测量值。除的时候一定要注意。
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP); // 设置四舍五入的精度
BigDecimal bd1 = new BigDecimal("840.9"); BigDecimal bd2 = new BigDecimal("12");//在创建BigDecimal时应该使用String或int,不能使用double BigDecimal bd3 = new BigDecimal(new Double(840.9).toString()); System.out.println(bd1); System.out.println(bd2); System.out.println(bd3); System.out.println(bd1.divide(bd2,2,RoundingMode.HALF_UP));//四舍五入 普通的double和float是不能用来表示金额等精确小数的,只能用来表示测量值。除的时候一定要注意。 bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP); // 设置四舍五入的精度