No puedo entender el DECIMAL de MySQL. Necesito que la fila pueda contener un número entre 00.0001 y 99.9999. ¿Cómo lo estructuraría para que funcione así?
No puedo entender el DECIMAL de MySQL. Necesito que la fila pueda contener un número entre 00.0001 y 99.9999. ¿Cómo lo estructuraría para que funcione así?
Respuestas:
Las columnas DOBLES no son lo mismo que las columnas DECIMALES, y usted tendrá problemas si usa columnas DOBLES para datos financieros.
DOUBLE es en realidad una versión de FLOAT de doble precisión (64 bits en lugar de 32 bits) . Los números en coma flotante son representaciones aproximadas de números reales y no son exactos. De hecho, los números simples como 0.01 no tienen una representación exacta en los tipos FLOTANTE o DOBLE.
Las columnas DECIMAL son representaciones exactas, pero ocupan mucho más espacio para un rango mucho más pequeño de números posibles. Para crear una columna capaz de contener valores de 0.0001 a 99.9999 como usted pidió, necesitaría la siguiente declaración
CREATE TABLE your_table
(
your_column DECIMAL(6,4) NOT NULL
);
La definición de columna sigue el formato DECIMAL (M, D) donde M es el número máximo de dígitos (la precisión ) y D es el número de dígitos a la derecha del punto decimal (la escala ).
Esto significa que el comando anterior crea una columna que acepta valores de -99.9999 a 99.9999. También puede crear una columna DECIMAL NO FIRMADA, que oscila entre 0.0000 y 99.9999.
Para obtener más información sobre MySQL DECIMAL, los documentos oficiales son siempre un gran recurso.
Tenga en cuenta que toda esta información es cierta para las versiones de MySQL 5.0.3 y posteriores. Si está utilizando versiones anteriores, realmente debería actualizar.
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]. Devolverá un error fuera de rango para valores negativos. También puede crear FLOAT y DOUBLE sin firmar. Manual: dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
Aunque las respuestas anteriores parecen correctas, solo una explicación simple para darle una idea de cómo funciona.
Suponga que su columna está configurada para ser DECIMAL(13,4). Esto significa que la columna tendrá un tamaño total de 13 dígitos, donde 4 de estos se utilizarán para la representación de precisión.
Entonces, en resumen, para esa columna tendría un valor máximo de: 999999999.9999
Hay soluciones correctas en los comentarios, pero para resumirlas en una sola respuesta:
Tienes que usar DECIMAL (6,4).
Entonces puede tener 6 números totales de dígitos, 2 antes y 4 después del punto decimal (la escala). Al menos según esto .
MySQL 5.x especificación de tipo de datos decimal es: DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]. La respuesta anterior es incorrecta al decir que los decimales sin signo no son posibles.
Para definir un campo permitiendo que sólo los decimales sin signo, con una longitud total de 6 dígitos, 4 de las cuales son decimales, se debería utilizar: DECIMAL (6,4) UNSIGNED.
También puede crear tipos de datos FLOAT y DOUBLE sin signo (es decir, no negativos).