java - 在代码中编写此公式是否有更清晰/更简单的方法?

标签 java math double bigdecimal

我需要返回一个 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 的结果将始终除以 10012 .因此,您可以将公式的这些静态部分保存在 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/

相关文章:

java - 查找时的 Eclipselink NPE

javascript - 将数字转换为空间量

matlab - 展开/展开截锥

java - 如何在 Java 中识别 BigDecimal 和 Double

java - 循环遍历枚举?

java - HttpClient:我可以通过多个线程为不同的域安全地重用 HttpContext 吗?

java - java中带参数的方法的实现

javascript - Spot it 算法 - js

Java 默认数字到字符串的行为

java - 在小数点处对齐 float 列 Java