2011-01-10 24 views

risposta

473

È possibile utilizzare questo ...

Math.abs(x) 
+1

Si potrebbe anche prendere in considerazione ~ x + 1. È piuttosto veloce, ma non chiaro su cosa stia facendo. Preparato per mostrare la differenza: http://jsperf.com/absolute-int – omgaz

+14

@omgaz Non sono uguali ... 'var x = -100; ~ x + 1 === 100' ma 'var x = 100; ~ x + 1 === -100'. 'Math.abs' lo rende sempre positivo mentre il complemento di quelli semplicemente inverte il segno. – jduncanator

+0

Si potrebbe anche prendere in considerazione -x. È abbastanza veloce! – naiad

10
unsigned_value = Math.abs(signed_value); 
40

Math.abs(x) o se si è certi il valore è negativo prima della conversione appena anteporre un normale segno meno: x = -x.

23

Il segno meno (-) può convertire numeri positivi in ​​numeri negativi e numeri negativi in ​​numeri positivi. x=-y è zucchero visivo per x=(y*-1).

var y = -100; 
var x =- y; 
74

Che dire di x *= -1? Mi piace la sua semplicità.

+3

+1 per semplicità e lavoro in entrambi i modi ad es.: Neg2pos e pos2neg –

+8

Mentre questo è semplice, presuppone che il numero sia sempre negativo. Se il caso d'uso è tale, allora è fantastico. Altrimenti, consiglierei cautela. – myusuf

+2

Non sono d'accordo @myusuf. Qualsiasi numero che sia 'x' sarà capovolto. Se 'x = 23' e viene spinto in quell'equazione,' x' sarà uguale a '-23'. Nelle parole di Mr. Escalante, "Un tempo positivo un negativo è uguale a un negativo, un negativo un negativo è uguale a un positivo". ... "Come raggiungo questi kiiiiiiidi ?!" – ExcellentSP

7
var posNum = (num < 0) ? num * -1 : num; // if num is negative multiple by negative one ... 

Trovo questa soluzione facile da capire.

5

Se vuoi scrivere codice interessante che nessun altro potrà mai aggiornare, provate questo:

~ --x

+0

Questo non funzionerà con i punti fluttuanti però ... e anche il valore di x cambierà. –

+0

Suppongo che se non riesci a cambiare x: ~ --x; ++ x – Kyle

+1

Kyle, l'operatore '~' converte il numero in un intero a 32 bit. Se hai un float come input, viene hosed. –

2

ho fatto qualcosa di simile me.

num<0?num*=-1:''; 

controlla se il numero è negativo e se lo è, si moltiplicano con -1 Questo non restituisce un valore, il suo fino a voi se catturarlo. Nel caso in cui si desidera assegnare a qualcosa, probabilmente si dovrebbe fare qualcosa di simile:

var out = num<0?num*=-1:num; //I think someone already mentioned this variant. 

Ma dipende realmente che cosa il vostro obiettivo è. Per me è stato semplice, positivo se negativo, altrimenti non fare nulla. Da qui il "" nel codice. In questo caso ho usato terziario operatore motivo ho voluto, potrebbe benissimo essere:

if(num<0)num*=-1; 

ho visto la soluzione bit a bit qui e ha voluto commentare su questo uno troppo.

~--num; //Drawback for this is that num original value will be reduced by 1 

Questo soultion è molto di fantasia, a mio parere, si potrebbe riscrivere così:

~(num = num-1); 

In termini semplici, prendiamo il numero negativo, prendiamo un lontano da esso e quindi bit a bit capovolgerlo . Se avessimo invertito bit per bit normalmente avremmo ottenuto un valore 1 troppo piccolo. È anche possibile fare questo:

~num+1; //Wont change the actual num value, merely returns the new value 

che farà lo stesso, ma si inverte e poi aggiungere 1 al numero positivo. Anche se non puoi fare questo:

~num++; //Wont display the right value. 

che non funziona causa di precedence, operatori in forma suffissa quali num++ sarebbero valutati prima ~ e la ragione del prefisso ++num wouldnt lavorare anche se è sulla stessa precedenza NOT bit a bit (~), è perché viene valutato da destra a sinistra. Ho provato a scambiarli ma sembra che il prefisso sia un po 'schizzinoso rispetto a NOT bit a bit. Il +1 funzionerà perché '+' ha una precedenza più alta e verrà valutato in seguito.

Ho trovato che la soluzione era piuttosto divertente e ho deciso di espanderci perché era stata appena lanciata e postare le persone a guardarlo probabilmente la ignoravano. Anche se sì, non funzionerà con i galleggianti.

Le mie speranze sono che questo post non si sia spostato dalla domanda originale. :/

0

JavaScript - senza l'utilizzo di funzioni:

var x=-9; 
 
var x=((x*x)**0.5); 
 
console.log(x);

NOTA: non può lavori nei vecchi browser.

3

So che questo è un po 'tardi, ma per le persone alle prese con questo, è possibile utilizzare

per la conversione da negativo a positivo

let x = -54; 
let result = Math.abs(x); 

per la conversione di positivo a negativo

let x = 54; 
let result = -Math.abs(x) 

Oppure si potrebbe semplicemente fare questo metodo breve.

per la conversione di positivo a negativo & Vice Versa

let x = -23; 
let result = -(23) 
0

È possibile utilizzare ~ operatore che converte logicamente il numero ai risultati negativi e aggiunge 1 al negativo:

var x = 3; 
 
x = (~x + 1); 
 
console.log(x) 
 
// result = -3

2

mio approccio minimale

Per convertire numero negativo a positivo & viceversa

var num = -24; 
 
num -= num*2; 
 
console.log(num) 
 
// result = 24

0

so un altro modo per farlo.Questa tecnica funziona negativo a positivo & Vice Versa

var x = -24; 
var result = x * -1; 

Vice Versa:

var x = 58; 
var result = x * -1; 

CODICE IN DIRETTA:

// NEGATIVE TO POSITIVE: ****************************************** 
 
var x = -24; 
 
var result = x * -1; 
 
console.log(result); 
 

 
// VICE VERSA: **************************************************** 
 
var x = 58; 
 
var result = x * -1; 
 
console.log(result); 
 

 
// FLOATING POINTS: *********************************************** 
 
var x = 42.8; 
 
var result = x * -1; 
 
console.log(result); 
 

 
// FLOATING POINTS VICE VERSA: ************************************ 
 
var x = -76.8; 
 
var result = x * -1; 
 
console.log(result);

+0

Questo non risponde alla domanda. dave chiede una funzione che modifichi il valore * da negativo a positivo * e * positivo a positivo *. – RaphaMex

+0

La sua domanda dice "Esiste una funzione matematica in JavaScript che converte i numeri in valori positivi?" Non menziona il positivo con il positivo. Menziona solo il negativo con il positivo. Perché vorresti convertire il positivo in positivo. Il valore sarebbe lo stesso. –

+0

Puoi chiedere chiarimenti in un commento sotto la domanda. Ad ogni modo, c'è una risposta accettata che è quella corretta. Puoi leggerlo di nuovo e vedere che c'è una funzione integrata che ... converte il positivo in positivo. – RaphaMex

Problemi correlati