Ошибка Math.pow()

#javascript #excel #math #jquery-calculation

#javascript #excel #математика #jquery-вычисление

Вопрос:

Я пытаюсь создать версию этого уравнения на JavaScript, которую я получил, работая в Excel:

Версия Excel:

 10000*(1 0.06)^30 6000*(((1 0.06)^30-1)/0.06)
  

Это вычисляет 531784.029

Версия JavaScript:

 console.log(10000*(1 0.06)^30 6000*(((1 0.06)^30-1)/0.06));
  

ВОЗВРАТ: 2789622

Или, если я попытаюсь использовать Math.pow() :

 console.log(10000*(Math.pow(1 .06),30) 6000*(Math.pow((1 .06),30-1)/.06));
  

ВОЗВРАТ: 841838.7898974773

Я полностью в тупике примерно через 6 часов. Как мне воссоздать это вычисление в Excel и получить то же число?

Комментарии:

1. Есть ли причина, по которой вы не сокращаете 30-1 и 1 0.06?

2. (1 0.06)^30 вы уверены, что это правильно? ^ выполняет XOR в JavaScript, а не power, как в Excel

3.Кроме того, во второй попытке (Math.pow(1 .06),30) скобки неверны. Что бы это сделало, так это оценить Math.pow(1 .06) , затем отбросить его и вернуть 30 из-за запятой — вы, вероятно, хотите Math.pow(1 .06,30)

4. Я использую (1 .06), потому что, как только я это выясню, «.06» фактически будет переменной, поступающей из входных данных. Это процентная ставка.

Ответ №1:

Для того же поведения, что и в Excel, у вас просто неправильный порядок операторов и неправильные параметры Math.pow функции в js, это должно быть так:

 console.log(10000*(Math.pow(1 .06,30)) 6000*((Math.pow(1 .06,30)-1)/0.06));  

^ оператор в javascript не такой, как в Excel, в js это означает побитовую операцию xor, в то время как в Excel это означает то же самое Math.pow , что и .

Math.pow Функция в javascript принимает два параметра, поэтому, например, чтобы выполнить ту же операцию, что и в Excel 1.06^30 , вы бы сделали Math.pow(1.06,30) в javascript.

кстати, может быть, это просто то, что вы привели для примера, но вам не нужно добавлять 1 .06 , вы могли бы просто написать 1.06 :

  console.log(10000*(Math.pow(1.06,30)) 6000*((Math.pow(1.06,30)-1)/0.06));  

Комментарии:

1. Я как раз собирался нажать Post, говоря более или менее то же самое, но вы были примерно на 2 секунды быстрее меня 🙂

2. @vlaz Спасибо за фрагмент кода js… Мне было интересно, как это сделать

3. На самом деле это довольно неловко, но мне потребовался месяц , чтобы понять, что в редакторе есть кнопка, когда вы публикуете. Это маленькая страница с <> иконкой в ней, которая находится в значительной степени в середине кнопок.

4. Кроме того, на случай, если кому-то еще это понадобится, это уравнение для сложных процентов в течение 30 лет под 6% годовых с добавлением 6000 долларов в КОНЦЕ каждого года.