введите приведенное экспоненциальное число к int или float - PullRequest
3 голосов
/ 11 ноября 2011

следующий код:

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

выходы

2
200
200

.. и я понятия не имею, почему. Спасибо.

1 Ответ

4 голосов
/ 11 ноября 2011

"2e2" - это научная запись , что означает 2 * 10 2 == 200.

  1. В вашем первом примере синтаксический анализ строки как int читает только цифры до первого нецифрового значения (поэтому он игнорирует e).
  2. Синтаксический анализатор PHP обрабатывает 2e2 как литерал с плавающей точкой со значением 200.0, и это дает 200 при приведении к типу int.
  3. Анализ строки в виде числа с плавающей запятой понимает нотацию и дает ожидаемый результат 200.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...