首页 > 编程 > Java > 正文

java中BigDecimal使用注意事项

2019-11-06 09:13:54
字体:
来源:转载
供稿:网友

比较

必须使用compareTo进行比较,看返回结果是-1、0、1判断两个数是A大于B,等于B,还是小于B。

calcResult.getTotalPRomotion().compareTo(BigDecimal.ZERO) > 0dangdangVipDiscount.compareTo(BigDecimal.valueOf(100)) == 0

转换

BigDecimal没有提供自动装箱的支持,所以不能直接和原始数据进行比较、运算,在比较或者运算前需要把非BigDecimal的数据转成BigDecimal数据:

BigDecimal.valueOf(100)

乘除

要先乘后除,以防止除不尽时(而小数计算时大多情况会出现除不尽),被舍弃的小数的影响被后续的乘法进一步放大。

promotionPriceMap.get(productId).multiply(promotionPrice).divide(totalPrice, 2, BigDecimal.ROUND_HALF_UP)

精确到指定位数

salePrice.multiply(shopVIPDiscount).setScale(2, RoundingMode.HALF_UP)price.divide(total, 2, BigDecimal.ROUND_HALF_UP)//可能不能除尽的情况使用discount.divide(10) //确定能够除尽的情况使用
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表