Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

porque me aparece 99.99? en algunos campos

Estas en el tema de porque me aparece 99.99? en algunos campos en el foro de Mysql en Foros del Web. hola amigos de este foro. saben tengo mi base de datos en mysql y todo anda bien en mi pc en mi localhost, pero cuanto ...
  #1 (permalink)  
Antiguo 10/08/2006, 09:16
Avatar de Heros  
Fecha de Ingreso: abril-2005
Mensajes: 69
Antigüedad: 19 años
Puntos: 1
porque me aparece 99.99? en algunos campos

hola amigos de este foro.
saben tengo mi base de datos en mysql y todo anda bien en mi pc en mi localhost, pero cuanto subo la base de datos a un servidor de base de datos que estoy alquilando algunos campos numericos, float, se cambian automaticamente todos 99,99 y esto es muy perjudicial para mi aplicación bueno gracias de antemano por las repuestas q puedan darme..
__________________
im knowing mi digitalself...
  #2 (permalink)  
Antiguo 13/08/2006, 12:00
Avatar de Heros  
Fecha de Ingreso: abril-2005
Mensajes: 69
Antigüedad: 19 años
Puntos: 1
hmmm... parece q a nadie le sucede lo q ami..
__________________
im knowing mi digitalself...
  #3 (permalink)  
Antiguo 13/08/2006, 12:54
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 2 meses
Puntos: 3
si cambias los campos de tipo "float" a tipo "double" a lo mejor no te pasa.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #4 (permalink)  
Antiguo 14/08/2006, 13:19
Avatar de Heros  
Fecha de Ingreso: abril-2005
Mensajes: 69
Antigüedad: 19 años
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...
  #5 (permalink)  
Antiguo 16/12/2009, 04:16
 
Fecha de Ingreso: noviembre-2009
Mensajes: 44
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: porque me aparece 99.99? en algunos campos

Hola a todos. Por si a alguien le sirve, mi me ha pasado algo parecido. Se que este post es viejo, pero bueno.

En mi aplicación, tengo un formulario ara insertar artículos, con su precio. Este precio, se almacena en una DB MySql en un campo decimal(5,2).

Al hacer las pruebas en mi ordenador, ningún problema:

1 - En el formulario de entrada, marco el precio como 64.87, por ejemplo.
2 - En la cadena de conexión, trato el parámetro con: Convert.ToDecimal(TBPrecioArticulo.Text)
3 - En la base de datos se inserta perfecto.

Ahora bien, al llevarlo al hosting, descubro qu al hacer el mismo proceso, el valor que se inserta es 999.99. He probad a cambiar a Decimal (6,2) y algunos otros, y nada.

Mi sorpresa ha sido, cuando he probado a introducir 64,87 en vez de 64.87. Esta vez me ha guardado perfectamente el valor 64.87 en la Base de datos!!!!

En fin, sólo lo escribo por si a alguien le sucede, que no se vuelva loco y que en vez de poner un (.) decimal de separación en el formulario, coloque una (,).

Agur!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:30.