2012-03-12 14 views
5

Sto cercando di arrotondare i valori del mio array a 2 punti decimali. Capisco che posso usare math.round ma funzionerà per un intero array? O avrò bisogno di scrivere una funzione per arrotondare ogni valore individualmente.Come arrotondare tutti i valori di un array a 2 punti decimali

+0

Se si desidera due punti decimali per ciascun elemento nell'array, è possibile chiamare Math.Round metodo per l'elemento eacch o si sta cercando qualcos'altro –

risposta

4

Loops!

var x = 0; 
var len = my_array.length 
while(x < len){ 
    my_array[x] = my_array[x].toFixed(2); 
    x++ 
} 

E, sì, un ciclo while è più veloce qui.

+0

Cheers per quello. Questo ha funzionato. Mi stavo chiedendo, perché è un po 'più veloce qui? Sono seduto accanto a un genio della logica del computer che è fermamente convinto che un ciclo for sarebbe più veloce? –

+0

Ero un po 'confuso, staresti meglio rimuovendo 'x' e facendo' while (len -) {my_array [len] = my_array [len] .toFixed (2);} 'Il metodo nel mio la risposta è 1 ms più lenta del modo in questo commento ... vedi: https://blogs.oracle.com/greimer/entry/best_way_to_code_a – tkone

+0

Anche se il ciclo 'while' è ancora più veloce del ciclo' for'. Ma come Knuth ha detto ... "Dovremmo dimenticare le piccole efficienze, diciamo circa il 97% delle volte: l'ottimizzazione prematura è la radice di tutti i mali" – tkone

2

È necessario scorrere l'array. Poi, per ogni elemento:

Confronto di entrambi i metodi:

Input .toFixed(2) Math.round(Input*100)/100 
1.00  "1.00"  1 
1.0  "1.00"  1 
1  "1.00"  1 
0  "0.00"  0 
0.1  "0.10"  0.1 
0.01  "0.01"  0.01 
0.001 "0.00"  0 
6

Questo è un ottimo momento per utilizzare la mappa.

// first, let's create a sample array 

var sampleArray= [50.2334562, 19.126765, 34.0116677]; 

// now use map on an inline function expression to replace each element 
// we'll convert each element to a string with toFixed() 
// and then back to a number with Number() 

sampleArray = sampleArray.map(function(each_element){ 
    return Number(each_element.toFixed(2)); 
}); 

// and finally, we will print our new array to the console 

console.log(sampleArray); 

// output: 
[50.23, 19.13, 34.01] 

Così facile! ;)

+0

Buon lavoro questo è quello che sto cercando. –

Problemi correlati