Ich habe eine Zeichenfolge "65.57". Ich brauche die int 6557Odd Casting Verhalten
Allerdings bekommen ...
(int) (((float) "65.57") * 100) === 6556
Seltsam, wenn aufgebrochen, alles wie erwartet funktioniert:
((float) "65.57") * 100) === 6557.0
und
(int) 6557.0 === 6557
aber wenn ich inline bin, bekomme ich 6556.
'Echo serialize ((float) "65,57" * 100);' wirft es in einen int und es kürzt gerade. Sie könnten runden, aber sollten Sie hier nicht schwimmen. – AbraCadaver
Die Antwort, warum dies geschieht, finden Sie im zweiten Abschnitt des Themas "Warnung Fließkomma-Genauigkeit" auf [dieser Seite] (http://php.net/manual/en/language.types.float.php#warn.float -precision) – DFriend
["Nie einen unbekannten Bruch in einen Integer werfen"] (http://us2.php.net/manual/en/language.types.integer.php#language.types.integer.casting) String-Manipulation fühlt sich an wie ein Overkill (für mich). Sie könnten stattdessen "Runde" verwenden. – csirmazbendeguz