计算bigdecimals的百分比

Llu*_*nez 26 java

我没有找到任何本地方法来执行此操作,因此我在辅助类中创建了自己的方法:

public static BigDecimal percentage(BigDecimal base, BigDecimal pct){
    return base.multiply(pct).divide(new BigDecimal(100));
}
Run Code Online (Sandbox Code Playgroud)

但我不太喜欢它,我想知道API是否有类似的东西.Number类(BigDecimal的祖先)将是一个不错的地方.

use*_*421 18

我不认为有一个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);
}
Run Code Online (Sandbox Code Playgroud)

可能不是多大的收获,只有所谓的非常频繁

最终把它放在一些Util类......

  • BigDecimal 有零、一和十。但不是一百或一千。好奇! (2认同)

Mic*_*rdt 8

随意子类BigDecimal并添加该方法.除此之外,你期待什么?您知道在哪里可以找到API并确认您希望使用该方法的类不会.就个人而言,我认为功能是如此微不足道,以至于在标准API中没有太多意义.

  • 是的,这是微不足道的,但经常使用,至少在某些类型的应用程序中. (6认同)
  • 我同意。虽然微不足道,但是用的很多 (2认同)

Val*_*huk 8

您可能希望使用100来实现除法BigDecimal.scaleByPowerOfTen(-2).

如果你做了一百万次就会增加.我的体验要快得多.

还有一个类似的方法BigDecimal.movePointLeft(2)- 请参阅其他主题以获取详细信息,并确定哪一个更适合您.


tra*_*god 5

另请参见DecimalFormat。您可以使用父级的工厂方法,NumberFormat.getPercentInstance()如此此处等所示。