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速度较慢。