PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Casting Problem


Hoffi
23.05.2005, 16:34
Ich hab da was gefunden was mir - sagen wir mal - komisch vorkommt.

Ich schreibe in eine Variable $a den String "2.30".
Diesen String multipliziere ich jetzt mit 100. Dadurch sollte ein AutoCast gemacht werden und das Ergebnis ist auch korrekt 230. Caste ist disen Wert auf INT Ist das Ergebnis 229.

Hier der PHP Code:

$zahl = "2.30";
echo (int)(str_replace(",",".",str_replace(" ","",$zahl)) * 100) . "<br>";
echo (int)($zahl * 100) . "<br>";


In beiden Fällen ist das ergebnis falsch. Korrekt ist das Ergebnis bei den folgenden Zeilen.

echo $zahl * 100 . "<br>";
echo (str_replace(",",".",str_replace(" ","",$zahl)) * 100) . "<br>";


Warum ist das so?
Castet der bie der Multiplikation auf FLOAT und bei der Umrechnung zu INT kommt das Problem? Wäre meine Vermutung.

Boothby
23.05.2005, 18:04
Ein Blick in die PHP Doku gibt eine Erklärung:

Wandeln Sie nie einen Teil eines Ausdrucks nach integer um, da dies manchmal zu unerwarteten Ergebnissen führen kann.

<?php
echo (int) ( (0.1+0.7) * 10 ); // Ausgabe: 7!
?>

Für mehr Informationen schauen Sie unter Warnung über float-Präzision (http://de3.php.net/manual/de/language.types.float.php#warn.float-precision) nach.

http://de3.php.net/int

Hoffi
24.05.2005, 23:48
Hm. OK. Dann muss ich mir was einfallen lassen. Danke.