Почему научная запись не идентична целому в php?

Мне просто интересно, почему мое утверждение if не было введено при использовании научной нотации, т.е. 1e2 вместо 100 а также 1e6 вместо 1000000,

Оказывается, они равны и не идентичны, как видно из следующего кода:

<?php
echo "Integer: " . 100; // prints 100
echo "\n";
echo "Scientific notation: " . 1e2; // prints 100
echo "\n";

echo "Equality: ";

if(100 == 1e2) {
echo "as expected";
} else {
echo "wtf php";
}
// prints "Equality: as expected"

echo "\n";
echo "Identity: ";

if(100 === 1e2) {
echo "as expected";
} else {
echo "wtf php";
}
// prints "Identity: wtf php"

я имею запустить его на разных версиях PHP и это, по крайней мере, непротиворечиво, поскольку это поведение одинаково для: 4.3.0 — 5.0.5, 5.1.1 — 5.6.27, hhvm-3.10.0 — 3.13.2, 7.0.0 — 7.1.0RC5 ,

Еще: почему !?

-1

Решение

=== оператор, в php, рассмотрим тип операндов.
1e2 даже вернуть float номер и 100 является целым числом
итак, это равно в значениях (==), но не в типах (===).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]