2009-09-17 15 views
39

Tengo un par de flotadores:¿Cambiar el signo de un número en PHP?

-4.50 
+6.25 
-8.00 
-1.75 

Cómo se puede cambiar todo esto a los flotadores negativos por lo que se convierten en:

-4.50 
-6.25 
-8.00 
-1.75 

También necesito una manera de hacer a la inversa

Si el flotar es negativo, hacerlo positivo.

+1

flotadores;) Mi mal. – dotty

Respuesta

108

Un trivial

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

o, mejor solución, en mi humilde opinión:

$num = -1 * abs($num) 

Como @VegardLarsen ha publicado,

la multiplicación explícita se puede evitar por brevedad, pero yo prefiero la legibilidad en lugar de shortne ss

me sugieren para evitar if/else (o equivalente operador ternario), sobre todo si tiene que manipular un número de elementos (en un bucle o el uso de una función lambda), ya que afectará el rendimiento.

"Si el flotador es negativo, hágalo de forma positiva".

Con el fin de cambiar el signo de un número que puede simplemente hacer:

$num = 0 - $num; 

o, se multiplica por -1, por supuesto :)

+1

¿No es esto al revés? –

+0

Ops, sí lo siento, solo revirtió el orden :) – drAlberT

+1

Ja, bueno ... por un segundo estuve dudando de mi propia cordura. –

22

¿Qué tal algo trivial como:

  • inversora:

    $num = -$num; 
    
  • conversión único positivo en negativo:

    if ($num > 0) $num = -$num; 
    
  • convertir solamente lo negativo en positivo:

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

Creo Gumbo la respuesta está bien. Algunas personas prefieren esta expresión de fantasía que hace la misma cosa:

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

EDITAR: Al parecer que busca una función que hará que los negativos positivos.Creo que estas respuestas son las más simples:

/* 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

¿por qué para envolver _abs() _ cuando se usa tal cual? nah. – drAlberT

9

re la edición: "También necesito una manera de hacer a la inversa Si el flotador es un punto negativo, lo convierten en un positivo"

$number = -$number; 

cambia el número a su opuesto.

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

Gracias por comentar por qué ha votado negativamente. Realmente util. –

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

    return $number; 
} 
-2

con Albert y solución de Dan Tao:

negativo a positivo y viceversa

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