Weird problem of converting float to an integer for ($ i0; $ I & lt; 10; $ I ++) {$ sum + 0.1 ;}echo & nbsp; (int) $ sum; why is the output 0 instead of 1 shared to: float converted to an integer weird problem
For ($ I = 0; $ I <10; $ I ++ ){
$ Sum + = 0.1;
}
Echo (int) $ sum;
Why is the output 0 instead of 1?
Share:
------ Solution --------------------
Reference Manual
Warning
Warnings about floating point precision
Obviously, a simple decimal score is like 0.1 or 0.7. it cannot be converted to an internal binary format without losing a little precision. This will lead to chaotic results: for example, floor (0.1 + 0.7) * 10) usually returns 7 instead of 8 in expectation, because the internal representation of the result is similar to 7. 9999999999999 ....
This is related to the fact that it is impossible to accurately express certain decimal scores with limited digits. For example, decimal 1/3 is changed to 0. 3333333333333 ....
Therefore, never believe that the result of a floating point number is accurate to the last digit, or compare whether the two floating points are equal. If higher precision is required, use any precision mathematical function or gmp function.