但行好事
莫论前程❤

divide–ArithmeticException算术异常–无穷小数扩张 java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result。

金融放心算钱时,常用反减操作,来避免钱因为除不尽而丢失。
反减:最后一个月的钱等于总金额-前几个月的总额

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result。
A.divide(B));

原来JAVA中如果用BigDecimal做除法的时候一定要在divide方法中传递第二个参数,定义精确到小数点后几位,否则在不整除的情况下,结果是无限循环小数时,就会抛出以上异常。 解决方法:

A.divide(B, 2, BigDecimal.ROUND_HALF_UP);

参数说明:

  • 除数
  • 精度
  • round的模式

round模式

UP(BigDecimal.ROUND_UP),       //      进位处理,2.35变成2.4 
DOWN(BigDecimal.ROUND_DOWN),   //      直接删除多余的小数位,如2.35会变成2.3 
CEILING(BigDecimal.ROUND_CEILING),
FLOOR(BigDecimal.ROUND_FLOOR),
HALF_UP(BigDecimal.ROUND_HALF_UP),     //     四舍五入,2.35变成2.4
HALF_DOWN(BigDecimal.ROUND_HALF_DOWN), //   四舍五入,2.35变成2.3,如果是5则向下舍
HALF_EVEN(BigDecimal.ROUND_HALF_EVEN),
UNNECESSARY(BigDecimal.ROUND_UNNECESSARY);
赞(2) 打赏
未经允许不得转载:刘鹏博客 » divide–ArithmeticException算术异常–无穷小数扩张
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏