首页 > 解决方案 > 使用 BigDecimals 计算百分比

问题描述

我想计算我收到的 BigDecimal 格式的数字:

BigDecimal number1 = new BigDecimal("17");
int percentage = 50;
BigDecimal percentageAmount = number1.multiply(new BigDecimal(percentage/100));

但我得到了一个 0 !

标签: javabigdecimal

解决方案


将除法结果转换为double. 整数除法按预期返回零。这应该有效。

BigDecimal percentageAmount = number1.multiply(new BigDecimal((double)percentage/100));

或者,将 100 设为 100.0。

BigDecimal percentageAmount = number1.multiply(new BigDecimal(percentage/100.0));

如果您使用的数量很少,这些解决方案将起作用。但是当数字很大时,这些解决方案不会给出精确的结果。这将是避免精度误差的最佳方法:

BigDecimal percentageAmount = number1.multiply(BigDecimal.valueOf((double)percentage/100));

推荐阅读