关于intval()函数的一些不理解的地方,望大家指正

关于intval()函数的一些不理解的地方,望大家指正

$int0 = 0.1;
for($i = 1; $i < 100; $i++){
        $int0 += 0.1;
        $tmp = intval($int0);
        echo "<br>intval($int0) = $tmp ";
        if($tmp){
                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(2.9) = 2 true
intval(3) = 3 true
intval(3.1) = 3 true
intval(3.2) = 3 true
intval(3.3) = 3 true
intval(3.4) = 3 true
intval(3.5) = 3 true
intval(3.6) = 3 true
intval(3.7) = 3 true
intval(3.8) = 3 true
intval(3.9) = 3 true
intval(4) = 4 true
intval(4.1) = 4 true
intval(4.2) = 4 true
intval(4.3) = 4 true
intval(4.4) = 4 true
intval(4.5) = 4 true
intval(4.6) = 4 true
intval(4.7) = 4 true
intval(4.8) = 4 true
intval(4.9) = 4 true
intval(5) = 4 true
intval(5.1) = 5 true
intval(5.2) = 5 true
intval(5.3) = 5 true
intval(5.4) = 5 true
intval(5.5) = 5 true
intval(5.6) = 5 true
intval(5.7) = 5 true
intval(5.8) = 5 true
intval(5.9) = 5 true
intval(6) = 5 true
intval(6.1) = 6 true
intval(6.2) = 6 true
intval(6.3) = 6 true
intval(6.4) = 6 true
intval(6.5) = 6 true
intval(6.6) = 6 true
intval(6.7) = 6 true
intval(6.8) = 6 true
intval(6.9) = 6 true
intval(7) = 6 true
intval(7.1) = 7 true
intval(7.2) = 7 true
intval(7.3) = 7 true
intval(7.4) = 7 true
intval(7.5) = 7 true
intval(7.6) = 7 true
intval(7.7) = 7 true
intval(7.8) = 7 true
intval(7.9) = 7 true
intval(8) = 7 true
intval(8.1) = 8 true
intval(8.2) = 8 true
intval(8.3) = 8 true
intval(8.4) = 8 true
intval(8.5) = 8 true
intval(8.6) = 8 true
intval(8.7) = 8 true
intval(8.8) = 8 true
intval(8.9) = 8 true
intval(9) = 8 true
intval(9.1) = 9 true
intval(9.2) = 9 true
intval(9.3) = 9 true
intval(9.4) = 9 true
intval(9.5) = 9 true
intval(9.6) = 9 true
intval(9.7) = 9 true
intval(9.8) = 9 true
intval(9.9) = 9 true
intval(10) = 9 true

点解

为何在1,5,6,7,8,9,10时使用intval()得到的值都小1呢 ?

[ 本帖最后由 v522zy 于 2010-3-20 23:41 编辑 ]

不会小于1啊。如果你是想比较相等应该用 ==
= 只是赋值。数字 0 是输出 false的。其他都是true。因为你只是赋值,只和后面的数字有关和前面的intval无关
如履薄冰

额,我明白了

有人说是浮点精度的问题,比如6应该是以形如5.999999999的排列

但是为何2,3,4是对的就很不明白了


还是多谢超版哈,

长经验了