monPay = (amtFin * amtI)/((1-(1+amtI)*Math.pow(-n,-n)));
我正在使用此代码,但它没有正确计算 Math.pow(-n,-n)。似乎 Math.pow(-n,-n) 正在计算为 0.0。所有变量都有类型double
。
看起来您正在尝试根据本金等计算每月还款额。但是,您的公式是错误的:(1+amtI)*Math.pow(-n,-n)
应该是Math.pow(1+amtI,-n)
.
发生的情况是 的值pow(-n,-n)
太低而无法表示为 a double
(绝对值的最小非零双精度约为 10E-323)。
您可以改用BigDecimal,但请注意计算BigDecimal
速度较慢。