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