2016-04-24 9 views
1

Ok, vielleicht ist ein Noob und ridicole Frage, aber ich habe ein kleines Problem.Javascript, multiplizieren Sie die letzte Schleife Nummer

Ich machte eine einfache for-Schleife, die auf eine bestimmte Weise eine Zahl summiert, ich muss das pow einer Zahl summieren. Es ist alles gut, wenn ich nicht den IncrementPercent verwenden, also wenn IcrementPercent 0 ich diese bekam:

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

Und das ist für mich richtig ist, aber wenn ich die IncrementPercent bei 10 zu aktivieren, so dass jedes Mal, wenn die Zahl muss um 1,1 und so weiter erhöht werden, ich habe diese

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 

und das ist nicht richtig für mich, weil ich das brauchen

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

so ist die Idee einfach ist, habe ich eine Startnummer, in dieser Fall ich s 2, also muss ich es für 3 das 1. Mal multiplizieren, für 3 * 3 das 2. Mal, für 3 * 3 * 3 das 3. Mal ...

Aber wenn ich den IncrementPercent aktiviere, möchte ich das tun :

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

Also jedes Mal ist die vorherige Zahl, die ich multiplizieren muss!

Das ist die Formel, die ich:

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 –

Antwort

1

Sie wurden overcomplicating:

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

Sehen Sie sich auch 'totalFactor = Faktor * (1 + incrementPercent)/100 'und dann nur eine Multiplikation bei jeder Iteration der Schleife. – Oriol

+0

Tnx für Ihre Hilfe, aber ich muss auch die Summe der Iteration, also, wenn ich 1 Iteration verwenden, ist die Summe 2, für 2 Iteration ist die Summe 8 und so weiter. Ich bin kein Programmierer, sorry. –