今天帮同事测试代码的时候,发现了一个bug问题,bug如下:
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
在计算手续费收取比例的时候同事直接将BigDecimal类型使用divide(除法运算)之后的数据做 multiply 乘法运算,然后我将投放金额设为10亿,手续费设为六十六万的时候,此时比例0.000666666… 然后乘以十,所以导致报此错误。
然后我结合真实场景并和同事沟通后,选择将除出来的数截取小数点后四位 不进行任何处理
FeeAmountt().divide(LoanAmount(),4,BigDecimal.ROUND_DOWN).multiply(BigDecimal.valueOf(100)));
BigDecimal在做divide运算时加上 保留小数位 和 保留规则
保留规则有如下:
建议在BigDecimal类型使用divide方法时都填上相对应的参数和取舍规则,以防BUG !!
本文发布于:2024-01-31 14:48:28,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170668371029290.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |