亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有一種更干凈/更簡單的方法來在代碼中編寫這個公式?

有沒有一種更干凈/更簡單的方法來在代碼中編寫這個公式?

胡子哥哥 2022-09-28 10:06:39
我需要返回一個雙精度值。此值派生自此公式。每月利息 = 余額 * 利率 / 100.00 /12.0由于一些精度問題,我將在計算過程中使用BigDecimal并返回雙精度值(因為這是貨幣的表示方式)。我已經嘗試了下面的代碼,它工作得很好,但如果你問我,看起來很長,有點不可讀。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;
查看完整描述

2 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

您知道 的結果將始終除以 和 。因此,您可以將公式的這些靜態部分保存在變量中。balance * interest rate10012static

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();


查看完整回答
反對 回復 2022-09-28
?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

我強烈建議您增加一些精確度。否則,您可能會得到一些聲明,即沒有提供確切的精度。BigDecimalArithmeticException


執行類似操作


public static double calculateMonthlyInterest(BigDecimal balance, BigDecimal rate,

               BigDecimal hundred, BigDecimal month) {

    return balance.multiply(rate)

            .divide(hundred, 2, BigDecimal.ROUND_HALF_UP)

            .divide(month, 2, BigDecimal.ROUND_HALF_UP)

            .doubleValue();

}

或者這個(如果你想提供參數):double


public static double calculateMonthlyInterest(double balance, double rate,

               double hundred, double month) {

    BigDecimal b = new BigDecimal(balance);

    BigDecimal r = new BigDecimal(rate);

    BigDecimal h = new BigDecimal(hundred);

    BigDecimal m = new BigDecimal(month);

    return b.multiply(r)

            .divide(h, 2, BigDecimal.ROUND_HALF_UP)

            .divide(m, 2, BigDecimal.ROUND_HALF_UP)

            .doubleValue();

}

這樣,代碼保持可讀性,但這需要一定的價格:有更多的代碼行!


查看完整回答
反對 回復 2022-09-28
  • 2 回答
  • 0 關注
  • 97 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號