Tabla de contenidos
MySQL 5 introduce matemáticas de precisión, esto es, tratamiento numérico que proporciona resultados más precisos y más control sobre valores inválidos que en versiones anteriores de MySQL. La matemática de precisión se basa en dos cambios de implementación:
La introducción de nuevos modos SQL en MySQL 5.0.2 que controlan lo estricto que es el servidor para aceptar o rechazar datos inválidos.
La introducción en MySQL 5.0.3 de una biblioteca para aritmética de punto fijo.
Estos cambios tienen varias implicaciones para operaciones numéricas:
Cálculos más precisos.
Para números exactos, los cálculos no introducen error en coma flotante. En su lugar, se usa precisión exacta. Por ejemplo, un número tal como .0001 se trata como un valor exacto en lugar de valor aproximado, y sumarlo 10,000 veces produce un resultado de 1, no un valor "cercano" a 1.
Comportamiento bien definido para el redondeo.
Para números exactos, el resultado de
ROUND()
depende de sus argumentos, no de
factores tales como el comportamiento de la biblioteca C
subyacente.
Independencia de plataforma mejorada.
Las operaciones con números exactos son los mismos entre distintas plataformas tales como Windows y Unix.
Control sobre tratamiento de datos inválidos.
Desbordamiento y división por cero pueden detectarse y tratarse
como errores. Por ejemplo, puede tratar un valor que es
demasiado grande para una columna como un error en lugar de
truncarlo para adaptarlo al rango del tipo de datos.
Similarmenet, puede tratar la división por cero como un error
en lugar que como una operación que produce un resultado de
NULL
. La elección de qué aproximación
seguir se determina mediante la variable de sistema
sql_mode
.
Un resultado importante de estos cambios es que MySQL proporciona un mejor cumplimiento del estándar SQL.
La siguiente discusión cubre varios aspectos de cómo funciona la matemática de precisión (incluyendo posibles incompatibilidades con aplicaciones anteriores). Al final, se dan algunos ejemplos que demuestran cómo MySQL 5 trata operaciones numéricas de forma más precisa que anteriormente.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.