2016-04-24 7 views
1

Ok, peut-être est une question noob et ridicule mais j'ai un petit problème.Javascript, multipliez le dernier numéro de boucle

J'ai fait une boucle simple qui somme d'une certaine manière un certain nombre, j'ai besoin de sommer la pow d'un nombre. Il est tout bon si je ne me le IncrementPercent, donc si IcrementPercent est 0 je suis arrivé ceci:

test - divider: 2 
test - divider: 6 
test - divider: 18 
test - divider: 54 
test - divider: 162 
test - divider: 486 
test - divider: 1458 

Et que pour moi est correct, mais si j'activer le IncrementPercent à 10, de sorte que chaque fois que le nombre doit incrémenter de 1,1 et ainsi de suite, j'ai ce

test - divider: 2.2 
test - divider: 6.6000000000000005 
test - divider: 19.8 
test - divider: 59.400000000000006 
test - divider: 178.20000000000002 
test - divider: 534.6 
test - divider: 1603.8000000000002 

et ce n'est pas correct pour moi, parce que je besoin de ce

test - divider: 2.2 
test - divider: 7.26 
test - divider: 23.958 
test - divider: 79.0614 
... and so on 

l'idée est simple, j'ai un numéro de départ, en ce cas je s 2, donc je dois le multiplier par 3 la 1ère fois, pour 3 * 3 la 2ème fois, pour 3 * 3 * 3 la 3ème fois ...

Mais si j'active le IncrementPercent je veux faire ça :

2*1.1 -> 2.2 
2.2*3*1.1 -> 7.26 
7.26*3*3*1.1 -> 23.958 

Donc chaque fois est le nombre précédent que je dois multiplier!

C'est la formule que j'ai:

IncrementPercent = 10; 
mult1 = 2; 
mult2 = 3; 
Game = 7; 

var divider = 1 + (mult1 * (1 + (IncrementPercent/100))) - mult1; 
for (i = 0; i <= (Game - 1); i++) { 
var divider = mult1 * Math.pow(mult2, i) * (1 + (IncrementPercent/100)); 
console.log('test - divider: ' + divider); 
} 
+0

2,2 * 3 * 1,1 -> 7,26 –

Répondre

1

Vous avez été trop compliquer:

var incrementPercent = 10, 
    number = 2, 
    factor = 3, 
    iterations = 7; 
for (var i = 0; i < iterations; ++i) { 
    number *= 1 + incrementPercent/100; 
    console.log(number); 
    number *= factor; 
} 
+0

Voir également 'totalFactor = facteur * (1 + incrementPercent)/100' et ensuite seulement faire une multiplication à chaque itération de la boucle. – Oriol

+0

Tnx pour votre aide, mais j'ai aussi besoin de retourner la somme d'itération, donc si j'utilise 1 itération, le total est de 2, pour 2 itérations, le total est de 8 et ainsi de suite. Je ne suis pas un programmeur désolé. –