php intval的测试代码发现问题
author:一佰互联 2019-05-01   click:205


<?php
$o = 0.1;
for($a = 1; $a < 100; $a++){
    $o += 0.1;
    echo "<br />intval("$o") = ".intval($o);
    if(intval($o)){
        print(" true");
    }else{
        print(" false");
    }
}
?> 

结果:
intval("0.2") = 0 false
intval("0.3") = 0 false
intval("0.4") = 0 false
intval("0.5") = 0 false
intval("0.6") = 0 false
intval("0.7") = 0 false
intval("0.8") = 0 false
intval("0.9") = 0 false
intval("1") = 0 false
intval("1.1") = 1 true
intval("1.2") = 1 true
intval("1.3") = 1 true
intval("1.4") = 1 true
intval("1.5") = 1 true
intval("1.6") = 1 true
intval("1.7") = 1 true
intval("1.8") = 1 true
intval("1.9") = 1 true
intval("2") = 2 true
intval("2.1") = 2 true
intval("2.2") = 2 true
intval("2.3") = 2 true
intval("2.4") = 2 true
intval("2.5") = 2 true
intval("2.6") = 2 true
intval("2.7") = 2 true
intval("2.8") = 2 true
..... 

发现 intval(1) 竟然返回 0 

不测试不会知道的

假象:
print("<br />intval("1.0") = ".intval("1.0"));
print("<br />intval("1.0") = ".intval("1.0"));
print("<br />intval("1") = ".intval("1")); 

intval("1.0") = 1
intval("1.0") = 1
intval("1") = 1