Cheat sheet de punto flotante para SQL
Tipos de punto flotante
El estándar SQL define tres tipos de punto flotante binarios:
REAL
tiene precisión dependiente de la implementación (normalmente se asocia a un tipo a nivel de hardware como precisión sencilla o doble del IEEE 754).DOUBLE PRECISION
tiene precisión dependiente de la implementación que es mayor que la deREAL
(normalmente se asocia al precisión doble del IEEE 754).FLOAT(N)
tiene al menosN
dígitos binarios de precisión, con un máximo paraN
que depende de la implementación.
El rango del exponente para los tres tipos también depende de la implementación.
Tipos decimales
El estándar define dos tipos decimales de punto fijo:
NUMERIC(M,N)
tiene exactamenteM
dígitos en total,N
de los cuales después del punto decimal.DECIMAL(M,N)
es lo mismo queNUMERIC(M,N)
, excepto porque permite tener más deM
dígitos totales.
Los valores máximos de M
y N
dependen de la implementación. Los proveedores
normalmente implementan los dos tipos de manera idéntica.
Cómo redondear
El estándar SQL no define explícitamente el redondeo, pero la mayoría de los
proveedores proporciona una función ROUND()
o TRUNC()
.
Sin embargo, normalmente no tiene mucho sentido redondear dentro de la base de datos, puesto que su función es almacenar los datos, mientras que redondear es un aspecto de la representación de los datos, y debe por tanto hacerse en el código de la capa de presentación.
Recursos
- Official ISO SQL 2008 standard (non-free)
- SQL 92 draft (free)
- MySQL numeric types
- PostgreSQL data types
- MS SQL Server data types
© Publicado en http://puntoflotante.org/ bajo una licencia Creative Commons Atribución Unported (BY). Original en inglés por Michael Borgwardt en http://floating-point-gui.de/.