侧边栏壁纸
博主头像
JavaLYG 博主等级

行动起来,活在当下

  • 累计撰写 95 篇文章
  • 累计创建 75 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

BigDecimal做除法的时候精度问题

liuyg
2022-03-01 / 0 评论 / 0 点赞 / 2 阅读 / 0 字
业务是要从分转化到元,因为这个除100的时候,没有写ROUND_UNNECESSARY,导致最终金额都四舍五入到元   o(╥﹏╥)o new BigDecimal().divide(BigDecimal,保留小数点后几位小数,舍入模式) 舍入模式 必须要写,如果是精确计算的结果就写 BigDecimal.ROUND_UNNECESSARY,不然会四舍五入到整数  
BigDecimal q1 = new BigDecimal("100.00");
new BigDecimal(金额分).divide(q1, 2,BigDecimal.ROUND_UNNECESSARY)
舍入模式: ROUND_CEILING //向正无穷方向舍入 ROUND_DOWN //向零方向舍入 ROUND_FLOOR //向负无穷方向舍入 ROUND_HALF_DOWN //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5 ROUND_HALF_EVEN //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN ROUND_HALF_UP //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6,也就是我们常说的“四舍五入” ROUND_UNNECESSARY //计算结果是精确的,不需要舍入模式 ROUND_UP //向远离0的方向舍入
0

评论区