Sé que SQL 92 es un estándar antiguo, pero estoy bastante seguro de que esto no cambia en las versiones más nuevas del estándar SQL.
SQL 92 define
La pregunta es:0.1
y 0.2
en la consulta SELECT 0.1 + 0.2
un aproximado o es exacto?
La respuesta es:usted no sabe, tampoco la base de datos puede saberlo.
Entonces, la base de datos ejecutará la implementación definida para los motores MySQL y MariaDB, esto parece ser manejado como DECIMAL(1,1)
tipos de datos
¿Por qué la respuesta de Nick devuelve los valores correctos o esperados con una definición de tabla?
SQL 92 también define
Lo que Nick ha hecho al definir el tipo de datos en la tabla.
Edité esta respuesta porque hoy encontré algo en el manual de MySQL.
La consulta
SELECT (0.1 + 0.2) = 0.3
Resultados en 1
en MySQL, lo que significa que MySQL usa un cálculo numérico exacto y usa Matemáticas de precisión
donde sea posible. Así que MySQL sabe que 0.1
, 0.2
y 0.3
son tipos de datos exactos aquí y necesita calcular exactamente, como esperaba antes de esta edición.
Significado de la consulta
SELECT (0.1 + 0.2) = 0.3
correrá bajo el capó más o menos como
SELECT CAST((0.1 + 0.2) AS DECIMAL(1, 1)) = CAST((0.3) AS DECIMAL(1, 1));