1

Javascript

function freq_rate(r) {
  // Step 1 - Equivalent Effective Rate Per Frequency, m, of the Annual Rate, r
  return ((1+r)^(1/12))-1; 
}

function discount_freq_rate(r) {
  // Step 2:  The Discount Version of Step 1
  return freq_rate(r)/(1+freq_rate(r));
}

function fv(r = 0.07,n = 30 ,m = 12) {
  //Apply to a Case Where r = annual interest rate, m = # months and n = # years
  return ((1 + freq_rate(r))^(m*n)-1)/discount_freq_rate(r);
}

I with fv(0.07,30), I am expecting a value of 1176.06485, but I am getting "Infinity" returned. Not sure what's wrong. My calculations are correct in excel with the following formula:

C9  = 1.07^(1/12)-1
C10 =C9/(1+C9)
1176.064858 =((1+C9)^(12*30)-1)/C10
2
  • if you get infinity, it probably means you're trying to divide by zero in floating calculation, so discount_freq_rate(1.07) gives zero. Looking at freq_Rate function, you need to review the use of ^, that's not a exponentiation (power) in javascript ! (it's bitwise-xor) Check Math.pow Commented Aug 26, 2021 at 18:55
  • ^ in javaScript and other languages is a logical operator ( XOR operator developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… ) not a mathematical operator Commented Aug 26, 2021 at 19:05

2 Answers 2

4

because ^ in JS is not the "power" operator, try with this:

function freq_rate(r) {
  // Step 1 - Equivalent Effective Rate Per Frequency, m, of the Annual Rate, r
  return Math.pow(1+r , 1/12)-1; 
}
Sign up to request clarification or add additional context in comments.

Comments

0

That's because ^ in javaScript and other languages is a logical operator not a mathematical operator . See here->XOR

In javascript you can use Math.pow

function freq_rate(r) {
  // Step 1 - Equivalent Effective Rate Per Frequency, m, of the Annual Rate, r
  return Math.pow(1+r,1/12)-1; 
}

function discount_freq_rate(r) {
  // Step 2:  The Discount Version of Step 1
  return freq_rate(r)/(1+freq_rate(r));
}

function fv(r = 0.07,n = 30 ,m = 12) {
  //Apply to a Case Where r = annual interest rate, m = # months and n = # years
  return Math.pow(1 + freq_rate(r),(m*n)-1)/discount_freq_rate(r);
}

console.log( fv(0.07,30))

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.