【问题标题】:Why is scientific notation not identical to integer in php?为什么科学记数法与php中的整数不一样?
【发布时间】:2016-11-07 17:20:48
【问题描述】:

我只是想知道为什么在使用科学计数法时没有输入我的 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 是双精度数,100 是整数,所以它们不是同一类型。

标签: php integer identity equality scientific-notation


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2022-01-05
    • 2019-04-22
    相关资源
    最近更新 更多