2
monPay = (amtFin * amtI)/((1-(1+amtI)*Math.pow(-n,-n)));

我正在使用此代码,但它没有正确计算 Math.pow(-n,-n)。似乎 Math.pow(-n,-n) 正在计算为 0.0。所有变量都有类型double

4

2 回答 2

2

看起来您正在尝试根据本金等计算每月还款额。但是,您的公式是错误的:(1+amtI)*Math.pow(-n,-n)应该是Math.pow(1+amtI,-n).

于 2013-03-17T08:54:48.377 回答
1

发生的情况是 的值pow(-n,-n)太低而无法表示为 a double(绝对值的最小非零双精度约为 10E-323)。

您可以改用BigDecimal,但请注意计算BigDecimal速度较慢。

于 2013-03-17T08:50:33.363 回答