sql >> Base de Datos >  >> RDS >> Mysql

¿Por qué MySQL ronda flota mucho más de lo esperado?

Cuando ejecuta la consulta:

SELECT * FROM some_table WHERE id = 123

Confía en la interfaz de usuario para dar formato a los números de coma flotante. La interfaz que está utilizando utiliza dos caracteres en lugar de más. Después de todo, no hay información sobre el número "correcto" para mostrar.

Puede convencer a la interfaz para que muestre el número correcto formateando el número como una cadena o como un decimal. Por ejemplo:

select format(some_float_field, 3)

convertirá esto en una cadena con tres decimales. Una advertencia:también agregará comas que quizás no desee. Esto también debería funcionar:

select cast(some_float_field as decimal(8, 3))

Tenga en cuenta que puede validar fácilmente que los datos sean correctos haciendo algo como:

select *
from some_table
where some_float_field between 1919.987 - 0.0001 and 1919.987 + 0.0001;

Tenga en cuenta que no desea utilizar = en valores de punto flotante, pero eso ya lo entiendes.