Mailinglisten-Archive |
Hendrik Frank wrote:
> Hallo,
Hallo Hendrik.
>
> ich programmiere nun grade seit Jahren mal wieder in PHP und stelle
> fest, dass es scheinbar in der Version 5 das Multiplizieren verlernt
> hat.
>
> CODE:
>
> function rechner($amount, $size, $factor, $preis) {
> if ($amount < 0) $amount=0;
> if ($size < 1) $size =1;
> if ($factor<=0) $factor=1;
>
> print "Preis $preis , Factor $factor , Amount $amount , Size $size
> <br />\n";
> // da gibt PHP dies aus:
> // Preis 5.99 , Factor 1.55 , Amount 1 , Size 1
>
> $value = ($preis * $factor * $amount * $size);
> print "Value $value <br />\n";
> //hier: Value 5
>
> return (float) $value;
> }
>
> Das Ergebnis von 5,99*1,55*1*1 ist also 5.
> Nach meinem alten Taschenrechner sollten es aber 9,2845 sein.
> Ich hoffe mir kann jemand meinen (wahrscheinlich dummen) Fehler
> zeigen...
Auf den ersten Blick sieht das alles richtig aus...
Auf dem zweiten Fällt etwas auf:
Dein Ergebnis ist 5. Wenn man jetzt einfach mal alle deine Zahlen zu
einem int casted (5.99 wird 5, 1.55 wird 1, 1 bleibt 1), dann wäre das
Ergebnis mit 5 korrekt.
Folgende Annahme: $amount und $factor sind ein string und php casted
diese "falsch", da php mit dem punkt nicht klar kommt.
So könntest du die Theorie testen:
var_dump($amount, $size, $factor, $preis);
Sind es strings? Wenn ja, dann versuch mal nach float zu casten und
schau, was rauskommt...
>
> Weihnachtliche Grüße,
> Hendrik
Yannik
php::bar PHP Wiki - Listenarchive