The following code:

echo (int) "2e2"; echo (int) 2e2; echo (float) "2e2"; 

outputs

2 200 200 

.. and i have no idea why. Thanks.

1 Answer

"2e2" is scientific notation, meaning 2*102 == 200.

  1. In your first example, parsing the string as an int reads only digits up to the first non-digit (so it ignores the e).
  2. The PHP parser treats 2e2 as a float literal with value 200.0 and this gives 200 when cast to a int.
  3. Parsing the string as a float understands the notation and gives the expected result of 200.
0

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy