Capítulo 23. Matemáticas de precisión

MySQL 5.0

Capítulo 23. Matemáticas de precisión

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 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 . La elección de qué aproximación seguir se determina mediante la variable de sistema .

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.

23.1. Tipos de valores numéricos

El ámbito de matemáticas de precisón para operaciones de valores exactos incluyen tipos de datos precisos ( y tipos interos) y literales de valores numéricos exactos. Los tipos de datos aproximados y literales numéricos se tratan como valores en coma flotante.

Literales numéricos de valores exactos tienen una parte entera o fraccional, o ambas. Pueden tener signo. Ejemplos: , , , , , .

Literales de valores numéricos aproximados se representan en notación científica con una mantisa y exponente. Una o ambas partes pueden tener signo. Ejemplos: , , , .

Números que parecen similares no necesitan ser ambos valores exactos o aproximados. Por ejemplo, es un valor exacto (punto fijo), mientras que es un valor aproximado (coma flotante).

El tipo de datos es un tipo de punto fijo y los cálculos son exactos. En MySQL, el tipo tiene varios sinónimos: , , . El tipo entero también es un tipo de valor exacto.

Los tipos de datos y son tipos de coma flotante y los cálculos son aproximados. En MySQL, los tipos sinónimos de o son y .