1.Non-terminating decimal expansion; no exact representable decimal result.
原因是使用除法未指定保留的小数位数,当除不尽的时候会报这个错误,解决方法:
BigDecimal avgCasePrice = totalPrice.divide(BigDecimal.valueOf(2),
new MathContext(2,RoundingMode.HALF_DOWN));
2.使用double或者float构造BigDecimal要注意的问题:
错误写法:BigDecimal d1 = new BigDecimal(5.1);
正确写法: BigDecimal d1 = new BigDecimal(“5.1”);
原因是double或者float在计算机中是以近似值的方法来表示的,第一种方式会导致数据不准确
文章讨论了在Java中使用BigDecimal时遇到的非终止十进制展开问题,解释了除法运算未指定小数位导致的错误,并提供了使用BigDecimal的正确构造方式,强调了double和float在表示精确度上的局限性。
635

被折叠的 条评论
为什么被折叠?



