2009-09-17 14 views
39

Ich habe ein paar Schwimmer:Das Vorzeichen einer Zahl in PHP ändern?

-4.50 
+6.25 
-8.00 
-1.75 

Wie kann ich all diese negativen Schwimmer ändern, so dass sie sich:

-4.50 
-6.25 
-8.00 
-1.75 

Auch brauche ich einen Weg, um die umgekehrte

Wenn das zu tun Float ist ein Negativ, mach es positiv.

+1

schwimmt;) Mein schlecht. – dotty

Antwort

108

Eine triviale

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

oder die bessere Lösung, IMHO:

$num = -1 * abs($num) 

Wie @VegardLarsen geschrieben hat,

die explizite Multiplikation vermieden werden können für die Kürze, aber ich bevorzuge Lesbarkeit gegenüber Shortne

ss

Ich schlage vor, wenn/else (oder gleichwertig ternärer Operator) vor allem zu vermeiden, wenn Sie eine Reihe von Punkten zu manipulieren (in einer Schleife oder mit einer Lambda-Funktion), da sie die Leistung beeinträchtigen werden.

"Wenn der Float ein Negativ ist, machen Sie ihn positiv."

Um das Vorzeichen einer Zahl ändern Sie einfach tun:

$num = 0 - $num; 

oder multiplizieren es mit -1, natürlich :)

+1

Ist das nicht rückwärts? –

+0

Ops, ja Entschuldigung, nur die Reihenfolge umgekehrt :) – drAlberT

+1

Ha, ok ... für eine Sekunde gab ich Zweifel an meiner eigenen Gesundheit. –

22

Wie wäre es etwas trivial wie:

  • Invertierung:

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

    if ($num > 0) $num = -$num; 
    
  • nur negativ in positive umzuwandeln:

    if ($num < 0) $num = -$num; 
    
41
$float = -abs($float); 
3

denke ich Gumbos Antwort ist in Ordnung. Manche Menschen bevorzugen diese Phantasie Ausdruck, der die gleiche Sache tut:

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

EDIT: Offenbar Sie suchen eine Funktion, die Negative sowohl positive als auch machen.Ich denke, diese Antworten sind die einfachste:

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

Warum _abs() _ bei der Verwendung umbrechen? Nein. – drAlberT

9

re die edit: „Ich brauche auch eine Möglichkeit, die umgekehrt zu tun, wenn der Schwimmer eine negativ ist, macht es zu einem positiven“

$number = -$number; 

ändert die Zahl in ihr Gegenteil.

-1
function invertSign($value) 
{ 
    return -$value; 
} 
+0

Vielen Dank für Ihre Kommentare, warum Sie Ihre Meinung geändert haben. Sehr nützlich. –

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

    return $number; 
} 
-2

ALBERT und Dan Tao-Lösung:

negativ auf positiv und viceversa

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