Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/08/2006, 13:19
Avatar de Heros
Heros
 
Fecha de Ingreso: abril-2005
Mensajes: 69
Antigüedad: 19 años, 10 meses
Puntos: 1
buscando en los post anteriores encontre esto.. chekeen ahi esta la respuesta a mi pregunta.. bye a todos
http://www.forosdelweb.com/showthrea...ighlight=99.99
Cita:
hola jabundio
El rango para un DECIMAL(M,D), depende mucho de tu version MySql.

En versiones Mysql anteriores al 3.23 las columnas que son de tipo DECIMAL(M,D), se almacenan usando M bytes por valor, incluyendo el signo(-) si era necesario y el punto decimal tambien estan incluido dentro de los M bytes.
Ejemplo, DECIMAL(5,2) los rangos serian -9.99 a 99.99 como veras tanto los 2 valores tienen 5 carcateres(incluyendo puntos y signos).

En versiones Mysql superiores a 3.23 las columnas que son de tipo DECIMAL(M,D), se manejan de acuerdo con la especificacion ANSI, la cual expresa que un tipo DECIMAL(M,D) debe tener la capacidad de representar a cada valor con M digitos y D decimales, esto quiere decir que aun los singos y puntos deben estar almacenados, por eso en en el manual oficial de mysql vas encontrar:

Código:
DECIMAL(M,D) | M+2 bytes if D > 0, M+1 bytes if D = 0 (D+2, if M < D)
Esto quiere decir que para DECIMAL(5,2), se necesitan 7 bytes para el valor "mas largo" (maximo de caracteres dentro de la columna, entonces seria 7 caracteres), el valor mas largo vendria a ser -999.99 como veras el valor expresado tiene 7 caracteres (5 caracteres numero y 2 caracteres signos).
Cuando Mysql representa un valor positivo, aprovecha el byte del signo(-), para poder extener su rango mas alla, entonces para un DECIMAL(5,2) seria 9999.99, como ves el valor espresado tiene (6 caracteres numero y un caracter signo).


Cita:
yo pongo 5,3 (5 digitos con 3 decimales) como longitud y que me ponga como predeterminado 1234.5 y me inserta 999.999


El valor 1234.5, Mysql lo almacena 1234.500 y este valor tiene 8 caracteres, lo cual superera el rango de tu columna, la cual es -99.999 a 999.999. La columna al verse superado coloca el valor mas alto el cual vendria a ser 999.999.

mas informacion la encentras en http://dev.mysql.com/doc/mysql/en/St...uirements.html

Saludos!
__________________
im knowing mi digitalself...