Frage

Ich habe ein paar Schwimmer:

-4.50
+6.25
-8.00
-1.75

Wie kann ich all dies in negative Schwimmer ändern, damit sie:

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

War es hilfreich?

Lösung

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 für Kürze vermieden werden, aber ich bevorzuge die Lesbarkeit gegenüber Kürme

Ich schlage vor, zu vermeiden, ob/sonst (oder gleichwertiger ternärer Operator), insbesondere wenn Sie eine Reihe von Elementen (in einer Schleife oder mit einem verwenden müssen Lambda -Funktion), wie es die Leistung beeinflusst.

"Wenn der Schwimmer negativ ist, machen Sie es positiv."

Um das Zeichen einer Nummer zu ändern, können Sie einfach:

$num = 0 - $num;

Oder multiplizieren Sie es natürlich mit -1 :)

Andere Tipps

$float = -abs($float);

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;
    

Re der Bearbeitung: "Außerdem brauche ich einen Weg, um das Gegenteil zu tun, wenn der Schwimmer negativ ist. Machen Sie es positiv."

$number = -$number;

ändert die Zahl in das Gegenteil.

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); }
function positive_number($number)
{
    if ($number < 0) {
        $number *= -1;
    }

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

Mit Albert und Dan Tao Lösung:

negativ bis positiv und vizeversa

$num = $num <= 0 ? abs($num) : -$num ;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top