Voglio rimuovere il segno di un numero in JavaScript. Questi sono i casi di test che già esaminati in jsperf (http://jsperf.com/remove-sign-from-number)Veloce e risparmia il modo di rimuovere il segno di un numero inedito in JavaScript
if(n < 0) n *= -1;
if(n < 0) n = -n;
n = Math.abs(n)
(n < 0) && (n *= -1)
(n < 0) && (n = -n)
n = Math.sqrt(n*n)
Secondo queste prove: if(n < 0) n *= -1
sembra essere una buona soluzione.
Conoscete un modo migliore, più efficiente e più efficiente per farlo?
Edit 1: Math.sqrt
caso di Aggiunto Nikhil, ma sqrt
di solito è piuttosto lento nella maggior parte dei sistemi.
Edit 2: la proposta di Jan per ops bit a bit può essere più veloce in alcuni casi, ma anche rimuovere cifre frazionarie, e quindi non funziona per me.
Caratteristiche prestazionali variano ampiamente tra i browser. Su SeaMonkey, 'Math.abs' chiaramente supera tutti gli altri. Su Konqueror, bitwise ('if (n <0) n = ~ n + 1') brilla [le varianti' && 'sono tutte negative] e' Math.abs' fa schifo. Tutto sommato, 'if (n <0) n * = -1' e' if (n <0) n = -n' sembrano essere quelli sicuri che non puzzano troppo male ovunque. Un problema con gli operatori bit a bit è che impongono il numero in un numero intero a 32 bit - se "n" non rientra in tale intervallo, la modalità bit a bit produrrebbe spazzatura. –