您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

ArithmeticException:“不终止的十进制扩展;没有确切可表示的小数结果”

ArithmeticException:“不终止的十进制扩展;没有确切可表示的小数结果”

从Java 11 BigDecimal文档:

当为MathContext对象提供的精度设置为0(例如MathContext.UNLIMITED)时,算术运算是精确的,不带MathContext对象的算术方法也是如此。(这是5之前的版本中唯一支持的行为。)

作为计算精确结果的必然结果,MathContext不使用精度设置为0 的对象的舍入模式设置,因此不相关。在除法的情况下,精确的商可以具有无限长的十进制扩展;例如1除以3。

如果商具有不间断的十进制扩展数,并且指定了该操作以返回精确的结果,ArithmeticException则将引发an 。否则,将返回除法的精确结果,就像其他操作一样。

解决此问题,你需要执行以下操作:

a.divide(b, 2, RoundingMode.HALF_UP)

其中2是小数位数,RoundingMode.HALF_UP是四舍五入模式

其他 2022/1/1 18:17:32 有510人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶