Page 1 of 1

Some problem with inval()

Posted: Sat Mar 20, 2010 8:45 pm
by v522zy

Code: Select all

$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");
    }
}
then,The output following:

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

So,Why the result is not correct when the value is 1,5,6,7,8,9 and 10?

Thanx for your help

Re: Some problem with inval()

Posted: Sat Mar 20, 2010 10:16 pm
by StathisG
You'll find the following useful:
intval
is_int

Re: Some problem with inval()

Posted: Sun Mar 21, 2010 3:34 am
by v522zy
OK, I got it.

Re: Some problem with inval()

Posted: Sun Mar 21, 2010 7:01 am
by requinix
What you're seeing are floating-point errors.