我没有找到任何本地方法来执行此操作,因此我在辅助类中创建了自己的方法:
public static BigDecimal percentage(BigDecimal base, BigDecimal pct){
return base.multiply(pct).divide(new BigDecimal(100));
}
但我不太喜欢它,我想知道API是否有类似的东西。 Number类(BigDecimal的祖先)将是一个不错的地方。
答案 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()
,如图所示here,here 等。