【发布时间】:2021-03-13 21:28:24
【问题描述】:
我有一个 Java BigDecimal 表达式,如下所示:
(totalPrep.divide(totalCase, 2, BigDecimal.ROUND_HALF_UP)).multiply(new BigDecimal(100))
在哪里
BigDecimal totalCase = BigDecimal.ZERO; BigDecimal totalPrep = BigDecimal.ZERO;
我必须将 totalPrep 与 totalCase 相除,然后将结果乘以 100 以获得以 % 为单位的结果值。 66.6666666666666666666666666666666666667
假设总 prep 是二进制 2,toalCase 是 3,那么数学结果是 66.6666666666666666666666666666666666667。我想将其连接到小数点后 2 位 66.67%
有什么建议吗?
【问题讨论】:
-
我认为 BigDecimal 是一种浮点数。您可以控制精度的总位数,而不是小数点后的位数。所以有一个小问题要开始。
-
所以我认为通常你最终会在打印时四舍五入输出,而不是实际数字本身。我只是碰巧在我的声誉变化中很方便:stackoverflow.com/questions/54121319/…
-
这也可能是您正在寻找的:stackoverflow.com/questions/3395825/…
-
仅供参考: 自 Java 1.5 起,将
BigDecimal.ROUND_HALF_UP替换为RoundingMode.HALF_UP。旧版本自 Java 9 起已弃用。 -
顺便说一句,如果这是一个百分比分割,你不会期望它们总是加起来为 100...
标签: java bigdecimal