java - 为什么我已经四舍五入了,却得到了一个不终止的十进制扩展?

标签 java bigdecimal

好的,所以我正在尝试除以 2 个随机 BigDecimal 值。如果数字不均匀或不规则而不是取余数,我宁愿将它四舍五入到最接近的整数。但是,当我这样做时,我的网站崩溃了,并且出现以下错误。

引起:java.lang.ArithmeticException:非终止十进制扩展;没有可精确表示的小数结果。

如果我没有四舍五入数字,我会理解这种情况的发生,但因为我已经四舍五入,所以我不明白为什么会这样。

  BigDecimal cartQty= (testValue1).getQuantity().getValue();
  BigDecimal cartMultiplier = (testValue2).getQuantity().getValue();
  //below where it crashes so if 4/3 and the value is 1.333 I'd expect to get 2.
  BigDecimal TotalPackageInt=  cartQty.divide(cartMultiplier ).setScale(0, RoundingMode.UP);

最佳答案

告诉 BigDecimal 在进行除法 时您希望如何舍入。像这样:

BigDecimal TotalPackageInt=  cartQty.divide(cartMultiplier, 0, RoundingMode.UP );

关于java - 为什么我已经四舍五入了,却得到了一个不终止的十进制扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38337991/

相关文章:

java - BigDecimal 四舍五入不四舍五入

java - 数学、坐标

java - @Min 和 @Max 验证在 spring boot 中不适用于 hibernate validator 包

java - 可移植开源 Java Web 服务器推荐?

java - 如何使用 Spring Boot 自动格式化列表 <object> 中的所有 bigdecimal 字段

java - 为什么输出是科学计数法?

java - 如何知道 BigDecimal 是否可以准确转换为 float 或 double?

java - 改造、实时数据适配器、使响应类包装器通用?

java - List 为空时的 XStream 空标记

Java - 如何找到 BigDecimal 的倒数?