PHP Berechnungen spielen verrückt

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    PHP Berechnungen spielen verrückt

    Hey,

    ich habe bei PHP ein Problem: Meine Berechnungen spielen komplett verrückt, ich bekomme bei gleichen Rechnungen ab und zu mal andere Ergebnisse raus...
    Der Code:

    PHP-Quellcode

    1. if ($sum > 0)
    2. $percent = (100.0 / $sum) * $val2;
    3. else
    4. $percent = 0.0;
    5. $p = $percent * 0.01;
    6. $var = strval($percent * (502 - 2));


    $sum ist immer 4, $val2 auch (per Ausgabe überprüft). Trotzdem kommt ab und zu für $percent und/oder für $var NaN raus, oder $var plötzlich 0.0000, obwohl $percent 100 ist - ich sehe überhaupt kein System dahinter!! Ich mein, ich teile da ja nirgends durch 0... Wo könnte das Problem sein? Spinnt vielleicht mein Webserver auf dem Laptop?
    Wäre toll, wenn jemand Rat wüsste...

    vG,
    Lupus
    Habs mal hochgeladen, und nach so 5 Tests hats immer gepasst - mehr ist grade nicht möglich, bPlaced is ziemlich überlastet... Vielleicht sollte ich dann mal XAMPP neu installieren?
    XAMPP workt bei mir auch nicht immer
    was ich mal hatte ich hatte bei einer Variable zwei Buchstaben vertauscht
    und da in PHP die Variablen automatisch erstellt werden dachte das Skript das is ne neue Variable ... könnte ja ein Fehler sein
    andere Frage ... wie übergibst du denn die Werte ?
    $sum berechnet er aus mehreren Datenbankwerten, $val2 ist ein Datenbankwert. Aber wie gesagt, die werden ausgegeben und das korrekt...

    Edit: Jetzt ist die Länge der Zeichenkette "17" interessanterweise auch 1...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lupus“ ()

    laut XAMPP oder Webserver ?

    lass dir mal mit print oder echo alle Zwischewerte ausgeben ... dann lässt sich der Datenverlauf zurück verfolgen und wir wissen wie es entsteht
    dann kann ich nicht weiterhelfen
    ich hab grad ne simple Seite am Laufen ^^ und hatte solche Probleme noch nie
    Also ich habe mal das Script übernommen und bischel geändert, dürtfte sich aber nicht auswirken.

    PHP-Quellcode

    1. <?php
    2. $sum = 4;
    3. $val2 = 4;
    4. if ($sum > 0) $percent = (100 / $sum) * $val2;
    5. else $percent = 0.0;
    6. echo $percent * 0.01;
    7. echo "<br />";
    8. echo $percent * (502 - 2);
    9. ?>


    Ausgabe:

    Quellcode

    1. 1
    2. 50000


    Setzte ich $sum = 4 und $val2 = 2 dann erhalte ich als Ergebnis

    Ausgabe:

    Quellcode

    1. 0.5
    2. 25000


    und zwar immer ohne irgendwelche NaN Ausgaben.

    Achso wenn das Script auch so machst mit festen Werten drin und es läuft, dann würde es höchstwahrscheinlich daran liegen wie die Werte aus der DB holst.
    Wenn die werde hast würde ich sie nochmal nach Integer parsen

    PHP-Quellcode

    1. $result = mysql_query("SELECT `sum`, `val2` FROM `werte` WHERE `id` = 1 LIMIT 1");
    2. $werte = mysql_fetch_object($result);
    3. $sum = intval($werte->sum);
    4. $val2 = intval($werte->val2);
    Naja, die Werte, die aus der Datenbank kommen, waren immer korrekt, auch wenn die anderen nicht stimmten - habe ich getestet.

    Ich habe inzwischen den PC (und damit auch XAMPP) neugestartet - Problem tritt anscheinend nicht mehr auf. Merkwürdig, dass das überhaupt passieren kann - aber solange es jetzt wieder klappt, gut...
    Nun wenn du die werte ausgibst und sie Stimmen heißt das noch nichts *g*

    $var1 = "100";

    $var2 = 5 * $var1;

    echo $var;
    echo "<br />";
    echo $var2;

    Ausgabe

    Quellcode

    1. 100
    2. NaN


    Das die 100 ein String ist siehst du bei der Ausgabe nicht und wenn du die Werte aus der DB holst könnten es auch Strings sein du gibst sie aus, sie sehen aus wie Zahlen sind aber Strings.
    Hierbie kommts drauf an wie der Parser eingestellt ist, werden die Strings automatisch in Integer umgewandlet wenn es welche sind oder nicht.
    Oder du hast noch ungültige Zeigen davor, alles schonmal vorgekommen bei falscher Datenbank konvertierung.