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
.
What happens is that the value of
pow(-n,-n)
is too low to be represented as adouble
(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.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 beMath.pow(1+amtI,-n)
.