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); // 设置四舍五入的精度
经验分享 程序员 微信小程序 职场和发展