Compute percentage for bigdecimals
I haven't found any native method to do this, so I created my own in a 开发者_如何学JAVAhelper class:
public static BigDecimal percentage(BigDecimal base, BigDecimal pct){
return base.multiply(pct).divide(new BigDecimal(100));
}
But I don't quite like it, I wonder if the API has something similar. The Number class (ancestor of BigDecimal) would be a nice place.
I don't think there is an API for that (I never needed it).
Your solution seams good to me, maybe you just add the constant 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);
}
probably not that much gain, only if called very often
eventually put it in some Util class...
You may want to implement the division by 100 using BigDecimal.scaleByPowerOfTen(-2)
.
It adds up if you do it a million times. It is much faster in my experience.
There is also a similar method BigDecimal.movePointLeft(2)
- see the other thread for details and decide which one works better for you.
Feel free to subclass BigDecimal
and add that method. Beyond that, what do you expect? You know where to find the API and confirm that the class you would like to have that method doesn't. Personally, I'd say the functionality is so trivial that there wouldn't be much of a point in having it in the standard API.
See also DecimalFormat. You can use the parent's factory method NumberFormat.getPercentInstance()
as shown here, here, et al.
精彩评论