计算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()
,如此处所示, 此处 等。