MySQL - Problema DECIMAL 10 de digitos!!!!

 
Vista:

Problema DECIMAL 10 de digitos!!!!

Publicado por Fito (1 intervención) el 01/09/2008 20:19:18
Tengo un problema con el tipo DECIMAL: necesito almacenear valores de hasta 10 digitos decimales, obviamente declaro mi tipo de dato en la tabla como DECIMAL(10,10), el problema es que al cargar la información me aparece el error de valor fuera de rangopara valores que tienen mas de 2 digitos en las unidades asi pues, si intento insertar un valor: 12.000000023, me muestra el error de fuera de rango, por el contrario si inserto un valor: 5.33333111, la inserción se hace sin ningun problema. Que debo hacer ?

Ayuda!!!

estoy utilizando MySQL 5
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema DECIMAL 10 de digitos!!!!

Publicado por Gonzalo GC (339 intervenciones) el 02/09/2008 16:48:27
La respuesta (al final del mensaje) amerita que te transcriba literalmente lo que dice el Manual de referencia Y TE PIDA QUE LO LEAS CON ATENCION (http://dev.mysql.com/doc/refman/5.0/es/numeric-type-overview.html):

A partir de MySQL 5.0.3:
------------------------------------------------------------------------------------------------
Número de punto fijo exacto y empaquetado. M es el número total de dígitos y D es el número de decimales. El punto decimal y (para números negativos) el signo '-' no se tiene en cuenta en M. Si D es 0, los valores no tienen punto decimal o parte fraccional. El máximo número de dígitos (M) para DECIMAL es 64. El máximo número de decimales soportados (D) es 30. Si UNSIGNED se especifica, no se permiten valores negativos.

Si se omite D, el valor por defecto es 0. Si se omite M, el valor por defecto es 10.

Todos los cálculos básicos (+, -, *, /) con columnas DECIMAL se hacen con precisión de 64 dígitos decimales.

Antes de MySQL 5.0.3:
------------------------------------------------------------------------------------------------
Número de punto decimal fijo sin empaquetar. Se comporta como una columna CHAR ; "sin empaquetar" significa que el número se alacena como una cadena de caracteres, usando un carácter para cada dígito del valor. M es el número total de dígitos y D es el número de decimales. El punto decimal y (para números negativos) el signo '-' no se cuenta en M, aunque se reserva espacio para él. Si D es 0, los valores no tienen punto decimal ni parte fraccional. El máximo rango de los valores DECIMAL es el mismo que para DOUBLE, pero el rango real para una columna DECIMAL dada puede estar restringido por la elección de M y D. Si se especifica UNSIGNED no se permiten números negativos.

Si se omite D, el valor por defecto es 0. Si se omite M, el valor por defecto es 10.

------------------------------------------------------------------------------------------------
Conclusión:
Si vas a usar 10 decimales y hasta 10 enteros, debería ser DECIMAL(20,10)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar