I ran into an issue by introducing floating point columns in the MySQL database schema that the comparisons on floating point values don’t return the correct results always.
1 – 50.12
2 – 34.57
3 – 12.75
4 – …(rest all less than 12.00)
SELECT COUNT(*) FROM `users` WHERE `points` > "12.75"
This returns me “3”.
I have read that the comparisons of floating point values in MySQL is a bad idea and decimal type is the better option.
Do I have any hope of moving ahead with the float type and get the comparisons to work correctly?
Do you notice the problem below?
There’s an extra
0.00000005722spread between some of those rows. Therefore some of those values will return false when compared with the value they were initialized with.To avoid problems with floating-point arithmetic and comparisons, you should use the
DECIMALdata type: