Diferença entre ** e ^ em Javascript
- #JavaScript
No Desafio Cálculo de fórmula de juros compostos a fórmula apresentada no Desafio é:
Montante = Investimento Inicial * (1 + Taxa de Juros Mensal) ^ Período em Meses
Porém dessa forma o resultado apresentado não é o esperado para o Desafio.
O correto seria:
Montante = Investimento Inicial * (1 + Taxa de Juros Mensal) ** Período em Meses.
A diferença está na utilização do operador exponencial **:
O operador exponencial ** retorna o resultado da elevação do primeiro operando à potência do segundo operando. É equivalente a Math.pow(), exceto que também aceita BigInts como operandos.
Algumas linguagens de programação usam o símbolo circunflexo ^ para exponenciação, mas o JavaScript usa esse símbolo para o operador XOR bit a bit.
Por exemplo:
const result1 = 1.07 ^ 3; // 2.000000
const result3 = Number(1.07 ** 3); // 1.2250431889138477
const result2 = Math.pow(1.07, 3); // 1.2250431889138477




Tirando a dúvida do Stevan Padilha.
Para alterar a fórmula para adicionar um valor fixo mensal ficaria assim:
taxaJurosMensal = taxaJurosMensal / 100;
const montante = (investimentoInicial * ((1 + taxaJurosMensal) ** periodoMeses)) + (valorFixoMensal * ((((1 + taxaJurosMensal) ** periodoMeses) - 1) / taxaJurosMensal));
Fica confuso devido ao tamanho então você pode quebrar em duas partes.
let montante = investimentoInicial * ((1 + taxaJurosMensal) ** periodoMeses);
montante += valorFixoMensal * ((((1 + taxaJurosMensal) ** periodoMeses) - 1) / taxaJurosMensal);
em JavaScript:
Muito interessante! Gostei da dica! 👏
Muito bacana Francisco, li o seu artigo e resolvi brincar um pouco. Será que tem um jeito de adicionar nessa fórmula abaixo, um valor fixo por mês para, para fazer juros compostos?
Eu fiz o seguinte código para chegar no resultado que falei, mas é um código um pouco mais extenso utilizando for.