计算bigdecimals的百分比

时间:2010-01-21 14:22:32

标签: java

我没有找到任何本地方法来执行此操作,因此我在辅助类中创建了自己的方法:

public static BigDecimal percentage(BigDecimal base, BigDecimal pct){
    return base.multiply(pct).divide(new BigDecimal(100));
}

但我不太喜欢它,我想知道API是否有类似的东西。 Number类(BigDecimal的祖先)将是一个不错的地方。

4 个答案:

答案 0 :(得分:17)

我认为不存在API(不是真的需要) 你的解决方案对我很好,也许你只需添加常量ONE_HUNDRED

public static final BigDecimal ONE_HUNDRED = new BigDecimal(100);

public static BigDecimal percentage(BigDecimal base, BigDecimal pct){
    return base.multiply(pct).divide(ONE_HUNDRED);
}

可能没有那么大的收益,只有在非常经常

最终把它放在一些Util类......

答案 1 :(得分:8)

随意加入BigDecimal子类并添加该方法。除此之外,你期待什么?您知道在哪里可以找到API并确认您希望使用该方法的类不会。就个人而言,我认为功能是如此微不足道,以至于在标准API中没有太多意义。

答案 2 :(得分:7)

您可能希望使用BigDecimal.scaleByPowerOfTen(-2)以100来实现除法。

如果你做了一百万次就会增加。我的经历要快得多。

还有一种类似的方法BigDecimal.movePointLeft(2) - 请参阅the other thread了解详细信息,并确定哪种方法更适合您。

答案 3 :(得分:2)

另见DecimalFormat。您可以使用父级的工厂方法NumberFormat.getPercentInstance(),如图所示herehere 等。