monPay = (amtFin * amtI)/((1-(1+amtI)*Math.pow(-n,-n)));
I am using this code but it is not calculating Math.pow(-n,-n) correctly. It seems like it is Math.pow(-n,-n) is calculating to 0.0. All variables have type double
.
monPay = (amtFin * amtI)/((1-(1+amtI)*Math.pow(-n,-n)));
I am using this code but it is not calculating Math.pow(-n,-n) correctly. It seems like it is Math.pow(-n,-n) is calculating to 0.0. All variables have type double
.
It looks like you're trying to compute monthly loan repayments based on the principal amount etc. However, your formula is wrong: the (1+amtI)*Math.pow(-n,-n)
should be Math.pow(1+amtI,-n)
.
What happens is that the value of pow(-n,-n)
is too low to be represented as a double
(the minimum non-zero double in absolute value is about 10E-323).
You may work with BigDecimal instead, but note that computations with BigDecimal
are slower.