[Problem] Float/Double Berechnung

EuroCent

Klappstuhl 2.0
Ich möchte 2Floats bzw. 2 Double zusammen rechnen lassen!

Meine Tabelle ist mit double gesetzt hab es auch in float versucht.

Folgendes Szenario:
PHP:
$alteZahl = 40.63;
$neueZahl = 9.27;

$ergebnis = $alteZahl + $neueZahl; //49.9

Soweit ist es richtig und auch so korrekt.

Meine Function:
PHP:
function sendCashTo($value1, $value2, $cash) {
        $this->_u1 = $value1;
        $this->_u2 = $value2;
        
        $this->_uID1 = $this->getUserID($this->_u1);
        $this->_uID2 = $this->getUserID($this->_u2);
        
        $this->_oldCash1 = $this->getKontoCash($this->_uID1);  //40.63
        
        //Setze Cash an Empfänger
        //$this->query("UPDATE `".$this->dbprefix."konten` SET `kontoCash`='$summe1' WHERE `kontoUserID`='".$this->_uID1."'");
        echo "UPDATE `".$this->dbprefix."konten` SET `kontoCash`='".(($cash) + ($this->getKontoCash($this->_uID1)))."' WHERE `kontoUserID`='".$this->_uID1."'";
        
        $this->_oldCash2 = $this->getKontoCash($this->_uID2); //Ignorieren!
        
        echo "<br />";
        
        //Setze Cash an Absender
        //$this->query("UPDATE `".$this->dbprefix."konten` SET `kontoCash`='$summe2' WHERE `kontoUserID`='".$this->_uID2."'");
        echo "UPDATE `".$this->dbprefix."konten` SET `kontoCash`='".(($this->_oldCash2))."' WHERE `kontoUserID`='".$this->_uID2."'";
    }

echo sendCashTo(1, 2, 9.27);

Sobald Ich dies abschicke, kommt immer 49.27 raus statt 49.9 :/
Ich habe schon verschiedene Varianten genommen, jedoch half nichts :/

Wenn Ich jedoch in der DB-Function statt der Variable $this->getKontoCash($this->_uID1) => 40.63 schreibe dann bekomme Ich die richtige Summe raus.

Hab auch schon überprüft ob ein Double bzw. Float exitiert und mir dies auch ausgibt.
Und Ja dies tut es, jedoch scheint er einfach nur 40 + 9.27 zurechnen statt 40.63 + 9.27

Woran kann es liegen? :/
 
Zuletzt bearbeitet:
Hi,

ist das Kommata beabsichtigt? Nachkommastellen werden im Englischen per "." getrennt, nicht per ",".
PHP:
$alteZahl = 40.63;
$neueZahl = 9,27;

Grüße,
BK
 
Lass mal SQL rechnen.
Gib mal das folgende aus und poste es hier
PHP:
echo "UPDATE `{$this->dbprefix}konten` 
SET `kontoCash`= {$cash} + {$this->getKontoCash($this->_uID1)}
WHERE `kontoUserID`='{$this->_uID1}'";

PS: Warum übergibstdu eine Zahl in ' in die DB? ' steht für String, nicht für Zahlen.
 
Lass mal SQL rechnen.
Gib mal das folgende aus und poste es hier
PHP:
echo "UPDATE `{$this->dbprefix}konten` 
SET `kontoCash`= {$cash} + {$this->getKontoCash($this->_uID1)}
WHERE `kontoUserID`='{$this->_uID1}'";

PS: Warum übergibstdu eine Zahl in ' in die DB? ' steht für String, nicht für Zahlen.

Das Ergebnis:
Code:
UPDATE `ptc_konten` SET `kontoCash`= 9.27 + 40,63 WHERE `kontoUserID`='2'

Okay der Fehler scheint in der Function getKontoCash zu liegen...
Ich schau mal was da genau falsch läuft.
 
Ja das hab Ich eben auch gemerkt :D

Manchmal sieht man den Wald vor lauter Bäumen nicht & wenn man functionen Schreibt sollte man auch die Functionen betrachten statt nur den fehler ansich :)

Jetzt nachdem Ich es behoben habe, DANK DIR, kann ich nun endlich weiter machen :)

VIELEN HERZLICHEN DANK :)

PS: {} <= Diese in der SQL-Abfrage hat das eine bestimmte bedeutung?
Oder sagen die nur aus das diese als String zu behandelt werden sollten? :)

Sorry für die lächerliche Frage ansich :D
 
Es ist eine PHP-Schreibweise um Variablen in Strings zu setzen. Einige Dinge gehen auch ohne {}
Hab vor geraumer Zeil mal diesen Text dazu verfasst
Probiere mal den folgenden Code und du wirst verstehen
PHP:
$foo = 'foo';
echo "Hallo $foobar<br />";
echo "Hallo {$foo}bar<br />";
Zudem kann innerhalb von {} direkt auf Array-Elemente oder Objekt-Properties zugegriffen werden
PHP:
$array = array('id_0'=>'foo', 'id_1'=>'bar');
$object = (object) $array;
echo "Hallo {$array['id_0']}{$object->id_1}<br />";
//geht sogar mit " anstelle von ' für den Indexname
echo "Hallo {$array["id_0"]}{$object->id_1}<br />";
//und somit kann der Index des Arrays wieder aus einem zusammengesetzten String bestehen
$id = 0;
echo "Hallo {$array["id_{$id}"]}{$object->id_1}<br />";
Und wenn man sich die {} einfach angewöhnt (den falsch sind sie nie), muss man sich keine Gedanken mehr machen, damit solche Fehler wie im ersten Beispiel passieren.
Zudem ists mMn besser lesbar, aber das ist Geschmacksachse

Wenn du das ganze noch lesbar im PHP habe willst, dann empfehle ich die folgenden 2 Punkte
a) den SQL-Teil in PHP formatieren: Heredoc-Syntax
b) Die Complex (Curly) Syntax anwenden um die Strings zusammenzusetzen. Das reduziert das Chaos mit öffnenden und schliessenden Anführungszeichen und den Verbindungs-Punkten

Aber denk dran. Das ganez geht nur innerhalb Doppelten Anführungszeichen.

Auch interessant an dieser Stelle, ist das folgende Tutorial
PHP SQL-Statement in PHP lesbar darstellen
 
Zurück