phpbar.de logo

Mailinglisten-Archive

[php] Simple Multiplikation schlägt fehl

[php] Simple Multiplikation schlägt fehl

Yannik Hampe yannik at cipher-code.de
Fre Dez 22 05:48:41 CET 2006



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