Pregunta

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 contrario

Si el flotador es negativo, conviértalo en positivo.

¿Fue útil?

Solución

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 información, pero prefiero la legibilidad a la falta de disponibilidad

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

  

" Si el flotador es negativo, hágalo positivo. "

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

$num = 0 - $num;

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

Otros consejos

$float = -abs($float);

¿Qué tal algo trivial como:

  • inversión:

    $num = -$num;
    
  • convertir solo positivo en negativo:

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

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

re la edición: " También necesito una forma de hacer lo contrario Si el flotador es negativo, conviértalo en positivo "

$number = -$number;

cambia el número a su opuesto.

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á buscando una función que también haga que los negativos sean 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); }
function positive_number($number)
{
    if ($number < 0) {
        $number *= -1;
    }

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

utilizando la solución alberT y Dan Tao:

negativo a positivo y viceversa

$num = $num <= 0 ? abs($num) : -$num ;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top