Negative Zahlen erkennen

Lesezeit: 3 Minuten

Benutzer-Avatar
BigJobbies

Ich habe mich gefragt, ob es eine Möglichkeit gibt, festzustellen, ob eine Zahl in PHP negativ ist.

Ich habe folgenden Code:

$profitloss = $result->date_sold_price - $result->date_bought_price;

Ich muss herausfinden, ob $profitloss negativ ist, und wenn ja, muss ich darauf hinweisen, dass es so ist.

  • Keine Sorge, wir haben alle unsere schlechten Tage 😉

    – Martin

    26. Mai 2011 um 7:47 Uhr

  • Ohh verdammt …. so eine einfache Lösung.. grr

    – BigJobbies

    26. Mai 2011 um 7:53 Uhr

  • Das ist einfach Pech ^^ Siehe meine Antwort unten, nur zum Spaß, Kumpel 😀

    Benutzer743234

    26. Mai 2011 um 7:59 Uhr

  • Das ist einfach fantastisch, weil ich buchstäblich auf dieser Seite bin, weil ich die gleiche Frage hatte, aber zum Glück erinnerte ich mich, bevor ich die Antwort sah. Es ist so einfach, aber es zeigt nur, dass wir die Dinge oft zu kompliziert machen.

    – Chud37

    19. März 2020 um 13:54 Uhr

Benutzer-Avatar
Siebenschläfer

if ($profitloss < 0)
{
   echo "The profitloss is negative";
}

Bearbeiten: Ich habe das Gefühl, dass dies eine zu einfache Antwort für den Vertreter war, also ist hier etwas, das Sie vielleicht auch hilfreich finden.

In PHP können wir den absoluten Wert einer Ganzzahl finden, indem wir die verwenden abs() Funktion. Wenn ich zum Beispiel versuchen würde, den Unterschied zwischen zwei Zahlen herauszufinden, könnte ich das tun:

$turnover = 10000;
$overheads = 12500;

$difference = abs($turnover-$overheads);

echo "The Difference is ".$difference;

Dies würde produzieren The Difference is 2500.

  • sonst { echo “Hurra …”; }

    – Naveed

    26. Mai 2011 um 7:51 Uhr

  • Ich habe keine Ahnung, was du meinst, dieser hat einiges an Training erfordert.

    – Siebenschläfer

    26. Mai 2011 um 8:06 Uhr

  • Gute Antwort, ich mag deine Bearbeitung auch. Aber was ist der Unterschied zu $difference = $turnover - $overheads;?

    – Hannes Schneidermayer

    30. Januar 2014 um 8:33 Uhr


  • Oh wow, ich hatte nicht erwartet, dies nach fast drei Jahren zu kommentieren. abs() gibt den absoluten Wert einer beliebigen Ganzzahl zurück, also gibt abs(-100) 100 zurück. $turnover-$overheads würde zu -2500 führen, wohingegen abs($turnover-$overheads) ergibt 2500.

    – Siebenschläfer

    30. Januar 2014 um 16:29 Uhr

Benutzer-Avatar
Mahn

Ich glaube, das ist, was Sie gesucht haben:

class Expression {
    protected $expression;
    protected $result;

    public function __construct($expression) {
        $this->expression = $expression;
    }

    public function evaluate() {
        $this->result = eval("return ".$this->expression.";");
        return $this;
    }

    public function getResult() {
        return $this->result;
    }
}

class NegativeFinder {
    protected $expressionObj;

    public function __construct(Expression $expressionObj) {
        $this->expressionObj = $expressionObj;
    }

    public function isItNegative() {
        $result = $this->expressionObj->evaluate()->getResult();

        if($this->hasMinusSign($result)) {
            return true;
        } else {
            return false;
        }
    }

    protected function hasMinusSign($value) {
        return (substr(strval($value), 0, 1) == "-");
    }
}

Verwendungszweck:

$soldPrice = 1;
$boughtPrice = 2;
$negativeFinderObj = new NegativeFinder(new Expression("$soldPrice - $boughtPrice"));

echo ($negativeFinderObj->isItNegative()) ? "It is negative!" : "It is not negative :(";

Beachten Sie jedoch, dass eval eine gefährliche Funktion ist, verwenden Sie sie daher nur, wenn Sie wirklich, wirklich herausfinden müssen, ob eine Zahl negativ ist.

🙂

  • Sie, mein Herr, sind eine schreckliche, schreckliche Person :))

    – Daniel

    9. März 2013 um 15:39 Uhr

  • Mein Gott ist das genial.

    – Mike P.

    16. September 2013 um 21:33 Uhr

  • Obwohl ich das nicht getestet habe, sieht es so aus, als würde es erkennen -0!

    – CJ Dennis

    6. Februar 2016 um 0:05 Uhr

  • Das hat meinen Tag versüßt! Vielen Dank.

    –Werner

    15. Juli 2016 um 8:01 Uhr

  • Ich kann diese Antwort von nun an als meine Definition von “Over Engineering” verwenden.

    – Jemand

    27. September 2016 um 10:27 Uhr

if(x < 0)
if(abs(x) != x)
if(substr(strval(x), 0, 1) == "-")

Benutzer-Avatar
andrewmitchell

Könntest du prüfen ob $profitloss < 0

if ($profitloss < 0):
    echo "Less than 0\n";
endif;

if ( $profitloss < 0 ) {
   echo "negative";
};

Versteh mich nicht falsch, aber du kannst es so machen 😉

function nagitive_check($value){
if (isset($value)){
    if (substr(strval($value), 0, 1) == "-"){
    return 'It is negative<br>';
} else {
    return 'It is not negative!<br>';
}
    }
}

Ausgabe:

echo nagitive_check(-100);  // It is negative
echo nagitive_check(200);  // It is not negative!
echo nagitive_check(200-300);  // It is negative
echo nagitive_check(200-300+1000);  // It is not negative!

Benutzer-Avatar
Robson Vieira

Multiplizieren Sie einfach die Zahl mit -1 und prüfen Sie, ob das Ergebnis positiv ist.

  • Fügen Sie den Code zur Antwort hinzu, dann gebe ich Ihnen +1. 🙂

    – gvsrepins

    5. November 2015 um 14:57 Uhr

1339540cookie-checkNegative Zahlen erkennen

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

Privacy policy