计算bigdecimals的百分比

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

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

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

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

我不认为有一个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类……

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

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

还有一个类似的方法BigDecimal.movePointLeft(2) – 查看其他线程的详细信息,并确定哪一个更适合您。

另请参见DecimalFormat 。 您可以使用父工厂方法NumberFormat.getPercentInstance() ,如此处所示, 此处 等。