为什么科学计数法与 php 中的整数不同?

Why is scientific notation not identical to integer in php?

我只是想知道为什么我的 if 语句在使用科学计数法时没有输入,即 1e2 而不是 1001e6 而不是 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"

我有 run it on different php versions 它似乎至少是一致的,因为这种行为在以下版本中是相同的: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.

然而:为什么!?

===运算符,在php中,考虑操作数的类型。 1e2偶return一个float数,而100是一个整数。 因此,它在值 (==) 上相等,但在类型上不相等 (===)。