with sprintf solo round numero number_format mostrar money formato floatval decimals decimales php math numbers sign

sprintf - ¿Cambiar el signo de un número en PHP?



round php (8)

Tengo algunas carrozas:

-4.50 +6.25 -8.00 -1.75

¿Cómo puedo cambiar todo esto a flotantes negativos para que se conviertan en:

-4.50 -6.25 -8.00 -1.75

También necesito una forma de hacer lo inverso

Si el flotador es negativo, hazlo positivo.


¿Qué tal algo trivial como:

  • Invertir:

    $num = -$num;

  • convirtiendo solo positivo en negativo:

    if ($num > 0) $num = -$num;

  • convirtiendo solo negativo en positivo:

    if ($num < 0) $num = -$num;


Creo que la respuesta de Gumbo está bien. Algunas personas prefieren esta expresión elegante que hace lo mismo:

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

EDITAR : aparentemente estás buscando una función que también haga positivos a los negativos. 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); }


Un trivial

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

o, la 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 falta de precisión, pero prefiero la legibilidad a la brevedad

Sugiero evitar if / else (u operador ternario equivalente) especialmente si tiene que manipular una cantidad de elementos (en un ciclo o usando una función lambda ), ya que afectará el rendimiento.

"Si el flotador es negativo, haz que sea positivo".

Para cambiar el signo de un número, simplemente puede hacer:

$num = 0 - $num;

o, multiplíquelo por -1, por supuesto :)


re the edit: "También necesito una forma de hacer el reverso Si el float es negativo, haz que sea positivo"

$number = -$number;

cambia el número a su opuesto.


usando la solución alberT y Dan Tao:

negativo a positivo y viceversa

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


$float = -abs($float);


function invertSign($value) { return -$value; }


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