Alle Zahlen negativ machen

Lesezeit: 3 Minuten

Benutzeravatar von dotty
dotty

Ich habe ein paar Schwimmer:

-4.50
+6.25
-8.00
-1.75

Wie kann ich all diese in negative Floats ändern, damit sie werden:

-4.50
-6.25
-8.00
-1.75

Außerdem brauche ich einen Weg, um das Gegenteil zu tun

Wenn der Schwimmer negativ ist, machen Sie ihn positiv.

  • Beachten Sie, dass die Umkehrung nicht wie die Umkehrung der ersten klingt. Wenn du alle Vorzeichen deines ersten Zahlensatzes auf negativ änderst und sie dann alle wieder auf positiv drehst, hast du nicht die Zahlen, mit denen du begonnen hast.

    – Programmrock

    1. Juni 2018 um 13:58 Uhr

Benutzeravatar von drAlberT
drAlberT

Ein triviales

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

oder, die bessere Lösung, IMHO:

$num = -1 * abs($num)

Wie @VegardLarsen gepostet hat,

Die explizite Multiplikation kann aus Gründen der Kürze vermieden werden, aber ich bevorzuge die Lesbarkeit gegenüber der Kürze

Ich schlage vor, if/else (oder einen gleichwertigen ternären Operator) zu vermeiden, insbesondere wenn Sie eine Reihe von Elementen bearbeiten müssen (in einer Schleife oder mit a Lambda-Funktion), da dies die Leistung beeinträchtigt.

“Wenn der Schwimmer negativ ist, machen Sie ihn positiv.”

Um das Vorzeichen einer Zahl zu ändern, können Sie einfach Folgendes tun:

$num = 0 - $num;

oder natürlich mit -1 multiplizieren 🙂

  • Ups, ja sorry, habe gerade die Reihenfolge umgekehrt 🙂

    – drAlberT

    17. September 2009 um 11:08 Uhr

  • Ha, ok… für eine Sekunde zweifelte ich an meinem eigenen Verstand.

    – DanTao

    17. September 2009 um 11:10 Uhr

  • Warum sollte es performanter sein, den absoluten Wert einer Variablen zu erhalten, ihn zu invertieren und dieser Variablen neu zuzuweisen, egal welchen Wert er hat?

    – Gumbo

    17. September 2009 um 11:26 Uhr

  • Ich könnte mich irren, aber ich bin mir ziemlich sicher, dass Sie, da Sie eine Operation unter bestimmten Bedingungen ausführen ($num ist positiv) und nicht unter anderen ($num <= 0), immer eine if-Anweisung verwenden werden irgendwo. Führt abs($num) nicht einfach $num = ($num >= 0) aus? $num : -$num; unter der Haube?

    – DanTao

    17. September 2009 um 11:36 Uhr

  • Sie haben Recht, aber es würde auf niedrigem Niveau in C durchgeführt werden. Durch PHP, nicht in PHP.

    – drAlberT

    17. September 2009 um 11:46 Uhr

Benutzeravatar von Vegard Larsen
Vegard Larsen

$float = -abs($float);

  • “Außerdem brauche ich einen Weg, um das Gegenteil zu tun”, diese Antwort bewirkt nur eines …

    – RespawnN

    9. Juli 2018 um 12:07 Uhr

  • @ReSpawN Um fair zu sein, nimmt das Gegenteil buchstäblich nur das - Weg. dh $float = abs($float);

    – Fritten

    23. Mai 2019 um 10:19 Uhr


  • Wert wird immer negativ sein. erwartet, es zu erwähnen.

    – ShivarajRH

    3. September 2019 um 7:51 Uhr

Gumbos Benutzeravatar
Gumbo

Wie wäre es mit etwas Trivialem wie:

  • invertieren:

    $num = -$num;
    
  • nur positiv in negativ umwandeln:

    if ($num > 0) $num = -$num;
    
  • nur negativ in positiv umwandeln:

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

Benutzeravatar von SilentGhost
SilentGhost

nochmal die Bearbeitung: “Außerdem brauche ich einen Weg, um das Gegenteil zu tun. Wenn der Float negativ ist, mach ihn positiv.”

$number = -$number;

ändert die Zahl in ihr Gegenteil.

Benutzeravatar von Dan Tao
Dan Tao

Ich denke, Gumbos Antwort ist in Ordnung. Einige Leute bevorzugen diesen ausgefallenen Ausdruck, der dasselbe tut:

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

BEARBEITEN: Anscheinend suchen Sie nach einer Funktion, die auch Negative positiv macht. Ich denke, diese Antworten sind die einfachsten:

/* 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); }

  • warum wickeln Abs() wenn es so verwendet wird? nö.

    – drAlberT

    17. September 2009 um 13:45 Uhr

Benutzeravatar von Wallace Vizerra
Wallace Vizerra

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

   return $number;
}

  • warum wickeln Abs() wenn es so verwendet wird? nö.

    – drAlberT

    17. September 2009 um 13:45 Uhr

Benutzeravatar von Frederik Krautwald
Frederik Krautwald

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

  • Danke, dass Sie kommentiert haben, warum Sie abgelehnt haben. Sehr nützlich.

    – Frederik Krautwald

    10. Dezember 2016 um 4:13 Uhr

  • Ich denke, das liegt daran, dass das OP ursprünglich angegeben hat, dass nur positive Zahlen das Vorzeichen umkehren sollen. Aber die Frage ist ziemlich verwirrend mit dem mehrdeutigen Bolzen: “Auch ich brauche einen Weg, um das Gegenteil zu tun”.

    – Programmrock

    1. Juni 2018 um 14:01 Uhr

1440990cookie-checkAlle Zahlen negativ machen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy