私は Math.pow() 関数を使用しており、次のコードがあります。
double monthlyRate = (0.7d / 12);
int loanLength = 3;
double powerTest = Math.pow(1.00583, 36);
double powerResult = Math.pow((1 + monthlyRate),(loanLength * 12));
これをデバッガで実行すると、値は次のようになります。
powerTest => 1.2327785029794363
powerResult => 7.698552870922063
最初は正しいものです。両方の代入行で Math.pow 関数に足を踏み入れました。powerTest の場合、Math.pow のパラメーターは double a => 1.00583 double b => 36.0 です。
powerResult の場合、double a => 1.0058333333333333 double b => 36.0 です。
これは、マシンが浮動小数点演算を実行する方法に問題があることはわかっていますが、修正方法がわかりません。悪い結果で計算する前に、次のことを試しました。
monthlyRate = Math.round(monthlyRate * 1000) / 1000;