Hacer que todos los números sean negativos

3 minutos de lectura

avatar de usuario de dotty
punteado

Tengo algunos flotadores:

-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.

  • Tenga en cuenta que el reverso no suena como el inverso del primero. Si cambias todos los signos de tu primer conjunto de números a negativos y luego los vuelves a colocar en positivos, no tendrás las cifras con las que comenzaste.

    – Progrock

    1 de junio de 2018 a las 13:58

avatar de usuario de drAlberT
DrAlberT

un trivial

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

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

$num = -1 * abs($num)

Como ha publicado @VegardLarsen,

la multiplicación explícita se puede evitar por brevedad, pero prefiero la legibilidad a la brevedad

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

“Si el flotador es negativo, que sea positivo”.

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

$num = 0 - $num;

o multiplícalo por -1, por supuesto 🙂

  • Ops, sí, lo siento, solo invertí el orden 🙂

    – DrAlberT

    17 de septiembre de 2009 a las 11:08

  • Ha, ok… por un segundo estuve dudando de mi propia cordura.

    – Dan Tao

    17 de septiembre de 2009 a las 11:10

  • ¿Por qué debería tener más rendimiento obtener el valor absoluto de una variable, invertirlo y reasignarlo a esa variable sin importar el valor que tenga?

    – Gumbo

    17 de septiembre de 2009 a las 11:26

  • Podría estar equivocado, pero estoy bastante seguro de que, dado que está realizando una operación en ciertas condiciones ($num es positivo) y no en otras ($num = 0)? $numero: -$numero; ¿bajo el capó?

    – Dan Tao

    17 de septiembre de 2009 a las 11:36

  • Tienes razón, pero se realizaría a bajo nivel, en C. Por PHP, no en PHP.

    – DrAlberT

    17 de septiembre de 2009 a las 11:46

Avatar de usuario de Vegard Larsen
Vegard Larsen

$float = -abs($float);

  • “También necesito una forma de hacer lo contrario”, esta respuesta solo hace una cosa…

    – Reengendrar

    9 de julio de 2018 a las 12:07

  • @ReSpawN Para ser justos, lo contrario es literalmente tomar el - fuera. es decir $float = abs($float);

    – Fritas

    23 de mayo de 2019 a las 10:19


  • valor siempre será negativo. esperaba mencionarlo.

    – ShivarajRH

    3 de septiembre de 2019 a las 7:51

Avatar de usuario de Gumbo
Gumbo

¿Qué tal algo trivial como:

  • invertir:

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

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

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

Avatar de usuario de SilentGhost
Fantasma silencioso

re la edición: “También necesito una forma de hacer lo contrario. Si el flotador es negativo, que sea positivo”

$number = -$number;

cambia el número a su opuesto.

Avatar de usuario de Dan Tao
dan tao

Creo que la respuesta de Gumbo está bien. Algunas personas prefieren esta elegante expresión 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); }

  • porque envolver abdominales() cuando se usa tal cual? No.

    – DrAlberT

    17 de septiembre de 2009 a las 13:45

Avatar de usuario de Wallace Vizerra
wallace vizerra

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

   return $number;
}

  • porque envolver abdominales() cuando se usa tal cual? No.

    – DrAlberT

    17 de septiembre de 2009 a las 13:45

Avatar de usuario de Frederik Krautwald
Federico Krautwald

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

  • Gracias por comentar por qué votaste negativo. Realmente util.

    – Federico Krautwald

    10 de diciembre de 2016 a las 4:13

  • Creo que esto se debe a que el OP declaró originalmente que solo quieren que los números positivos cambien de signo. Pero la pregunta es bastante confusa con el perno ambiguo: “También necesito una forma de hacer lo contrario”.

    – Progrock

    1 de junio de 2018 a las 14:01

¿Ha sido útil esta solución?