我需要返回一个 double 值。 此值源自此公式。
月息=余额*利率/100.00/12.0
由于一些精度问题,我将在计算期间使用 BigDecimal 并返回 double 值(因为这是表示货币的方式)。
我试过下面的代码,它工作得很好,但如果你问我的话,它看起来很长而且有点不可读。
double bal = 10, rate=2, hundred = 100.00, month = 12.0;
double monthInt= (BigDecimal.valueOf(bal).multiply(BigDecimal.valueOf(rate)).divide(BigDecimal.valueOf(hundred)).divide(BigDecimal.valueOf(month))).doubleValue();
return monthInt;
最佳答案
您知道 balance * interest rate
的结果将始终除以 100
和 12
.因此,您可以将公式的这些静态部分保存在 static
中。多变的。
private static final BigDecimal MONTH_IN_PERCENT = BigDecimal.valueOf(100 * 12);
然后在你的计算中使用它:
return BigDecimal.valueOf(bal).multiply(BigDecimal.valueOf(rate).divide(MONTH_IN_PERCENT).doubleValue();
如果你能保证 bal * rate <= Long.MAX_VALUE
,你可以使用这个版本:
return BigDecimal.valueOf((long) bal * rate).divide(MONTH_IN_PERCENT).doubleValue();
关于java - 在代码中编写此公式是否有更清晰/更简单的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55571301/