关于金钱的计算经常会用到BigDecimal,其中精度和四舍五入是个容易忘记的点,专门记录下
下面的例子是两个bigdecimal相除,并保留十位小数。
BigDecimal totalMoney = new BigDecimal(99);
BigDecimal totalPerson = new BigDecimal(5);
BigDecimal money = totalMoney.divide(totalPerson,10,BigDecimal.ROUND_HALF_UP);
divide方法有三个参数,第一个是除数,第二个scale是小数点后保留的位数,第三个是进位方式,
BigDecimal.ROUND_UP 要舍入的小数总是向前一位进位(不分正负);
BigDecimal.ROUND_DOWN 要舍入的小数总是直接砍掉,不进位(不分正负);
BigDecimal.ROUND_CEILING 7.61保留1位,变成7.7,-7.61保留一位,变成-7.6;
BigDecimal.ROUND_FLOOR 7.67保留1位,变成7.6,-7.61保留一位,变成-7.7;
BigDecimal.ROUND_HALF_UP 四舍五入,2.35保留1位,变成2.4
BigDecimal.ROUND_HALF_DOWN 四舍五入,2.35保留1位,变成2.3
后边两种的区别就是如果保留的位数的后一位如果正好是5的时候,一个舍弃掉,一个进位。
转载:https://blog.csdn.net/flylstc/article/details/100932851
查看评论