小言_互联网的博客

BigDecimal点滴

303人阅读  评论(0)

关于金钱的计算经常会用到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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场