Le 01/09/2011 10:43, magic-php@xxxxxxxxxxxxxxxxx a écrit :
Simon J Welsh writes:
On 1/09/2011, at 9:53 AM, magic-php@xxxxxxxxxxxxxxxxx wrote:
Am Mittwoch, 31. August 2011, 20:48:37 schrieb Shawn McKenzie:
On 08/31/2011 09:03 AM, magic-php@xxxxxxxxxxxxxxxxx wrote:
var_dump((float)"8315e839da08e2a7afe6dd12ec58245d");
results in float(INF)
The cast to float is truncating the invalid characters and since your
string contains a float that is INF (8315e839) before the
truncation at
the "d", then it returns INF. Makes perfect sense.
If I use a string in PHP I don't want PHP to cut this string. Either
it uses this string as it is or it gives me an error/warning/false
(what ever...). But silently(!!!) using a small piece of a string is
not understandable.
The manual clearly states this is how a string is converted into a
number:
http://php.net/manual/en/language.types.string.php#language.types.string.conversion
"The value is given by the initial portion of the string. If the
string starts with valid numeric data, this will be the value used.
Otherwise, the value will be 0 (zero). Valid numeric data is an
optional sign, followed by one or more digits (optionally containing
a decimal point), followed by an optional exponent. The exponent is
an 'e' or 'E' followed by one or more digits."
If you don't want the string turned into a number using the
documented method, don't use it as one.
Ok, then let's discuss the documented behavior ;-)
Do you (not the document) really like this behavior? I mean if I am
the only one wondering about that behavior it is ok for me. I just
want to help PHP.
cheers
Daniel
No professional programmer would like this kind of behavior.
But PHP want to be accessible for newbies so we have to deal with that.
Hope this will be fixed in the next generation...
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php