我没有找到任何本地方法来完成这个任务,所以我在一个帮助类中创建了自己的方法:
public static BigDecimal percentage(BigDecimal base, BigDecimal pct){
return base.multiply(pct).divide(new BigDecimal(100));
}
但是我不太喜欢它,我想知道API是否有类似的功能。Number类(BigDecimal的祖先)可能是一个不错的选择。
我没有找到任何本地方法来完成这个任务,所以我在一个帮助类中创建了自己的方法:
public static BigDecimal percentage(BigDecimal base, BigDecimal pct){
return base.multiply(pct).divide(new BigDecimal(100));
}
但是我不太喜欢它,我想知道API是否有类似的功能。Number类(BigDecimal的祖先)可能是一个不错的选择。
我认为没有相关的 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类中...
ZERO
和ONE
相当古老(Java 1.2);TEN
也已经有些过时了,自从Java 5以来;也许我们会在Java 7中得到HUNDERT
:-) 但是无论如何创建它都不是什么大问题...问候! - user85421您可能希望使用BigDecimal.scaleByPowerOfTen(-2)
来实现除以100。
如果您执行了一百万次,它会叠加。根据我的经验,这种方法要快得多。
还有一个类似的方法BigDecimal.movePointLeft(2)
- 请查看其他线程获取详细信息,并决定哪个方法更适合您。
可以自由地继承BigDecimal
并添加该方法。除此之外,你还期望什么呢?你知道在哪里找到API并确认你想要的类没有该方法。个人而言,我认为这个功能如此微不足道,以至于将其放入标准API中没有太大意义。