2009-09-17 7 views
39

Ho un paio di carri:Cambiando il segno di un numero in PHP?

-4.50 
+6.25 
-8.00 
-1.75 

Come posso cambiare tutto questi per carri negativi in ​​modo che diventino:

-4.50 
-6.25 
-8.00 
-1.75 

Inoltre ho bisogno di un modo per fare il contrario

Se il float è un negativo, rendilo positivo.

+1

carri;) Il mio male. – dotty

risposta

108

Un banale

$num = $num <= 0 ? $num : -$num ; 

o, la soluzione migliore, secondo me:

$num = -1 * abs($num) 

Come @VegardLarsen ha pubblicato,

la moltiplicazione esplicita può essere evitato per carità, ma preferisco la leggibilità su shortne ss

suggerisco di evitare if/else (o equivalente operatore ternario) soprattutto se si dispone di manipolare una serie di articoli (in un loop o utilizzando una funzione lambda), in quanto influisce sulle prestazioni.

"Se il float è negativo, fallo positivo."

Per cambiare il segno di un numero che si può semplicemente fare:

$num = 0 - $num; 

o, moltiplicarlo per -1, ovviamente :)

+1

Non è indietro? –

+0

Ops, sì scusate, ho appena invertito l'ordine :) – drAlberT

+1

Ah, ok ... per un secondo ho messo in dubbio la mia sanità mentale. –

22

Che ne dite di qualcosa di banale come:

  • inversione:

    $num = -$num; 
    
  • conversione unico positivo in negativo:

    if ($num > 0) $num = -$num; 
    
  • conversione negativo solo in positivo:

    if ($num < 0) $num = -$num; 
    
41
$float = -abs($float); 
3

penso Gumbo di la risposta va bene. Alcune persone preferiscono questa espressione di fantasia che fa la stessa cosa:

$int = (($int > 0) ? -$int : $int); 

EDIT: A quanto pare siete alla ricerca di una funzione che renderà negativi positivo.Credo che queste risposte sono le più semplici:

/* I am not proposing you actually use functions called 
    "makeNegative" and "makePositive"; I am just presenting 
    the most direct solution in the form of two clearly named 
    functions. */ 
function makeNegative($num) { return -abs($num); } 
function makePositive($num) { return abs($num); } 
+1

perché avvolgere _abs() _ se usato così com'è? nah. – drAlberT

9

re di modifica: "Inoltre ho bisogno di un modo per fare il contrario se il galleggiante è un aspetto negativo, ne fanno un positivo"

$number = -$number; 

cambia il numero al suo opposto.

-1
function invertSign($value) 
{ 
    return -$value; 
} 
+0

Grazie per aver commentato perché hai downvoted. Davvero utile –

2
function positive_number($number) 
{ 
    if ($number < 0) { 
     $number *= -1; 
    } 

    return $number; 
} 
-2

con Albert e la soluzione di Dan Tao:

negativo a positivo e viceversa

$num = $num <= 0 ? abs($num) : -$num ;