Ребята, почему перечисленные условия возвращают true?
var_dump("10" == "1e1"); //true
var_dump(100 == "1e2"); //true
var_dump("1" == "01"); //true
Спасибо
Если строка распознается как числовое значение, результирующее значение и тип определяется так, как показано далее.
К примеру:
100 == "1e2" - true, так как 1 умножить на 10 в квадрате равно 100.
Аналогично, 1e1 это 1 умножить на 10 в первой степени, значит ровно 10. Такая запись удобна для записи очень больших или очень маленьких чисел. Например, 6.02e23 - это число Авогадро, которое без экспоненциальной записи будет иметь вид что-то вроде 602214076000000000000000.
Если строка не содержит какой-либо из символов '.', 'e', или 'E', и
значение числа помещается в пределы целых чисел (определенных
PHP_INT_MAX), строка будет распознана как целое число
Во всех остальных случаях она считается числом с плавающей точкой (float).
Значение определяется по начальной части строки. Если строка начинается с верного числового значения, будет использовано это значение. Иначе значением будет 0 (ноль). Верное числовое значение - это одна или более цифр (могущих содержать десятичную точку), по желанию предваренных знаком с последующим необязательным показателем степени. Показатель степени - это 'e' или 'E' с последующими одной или более цифрами.
Это все описано в этой статье из мануала по PHP.
Про экспоненциальную запись чисел вообще.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости