开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜