问题
The following code:
echo (int) "2e2";
echo (int) 2e2;
echo (float) "2e2";
outputs
2
200
200
.. and i have no idea why. Thanks.
回答1:
"2e2" is scientific notation, meaning 2*102 == 200.
- In your first example, parsing the string as an int reads only digits up to the first non-digit (so it ignores the
e
). - The PHP parser treats
2e2
as a float literal with value 200.0 and this gives 200 when cast to a int. - Parsing the string as a float understands the notation and gives the expected result of 200.
来源:https://stackoverflow.com/questions/8090275/type-cast-exponential-number-to-int-or-float