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

cambio tipo de dato??

Estas en el tema de cambio tipo de dato?? en el foro de Mysql en Foros del Web. Que tal amigos del foro, en una tabla de cantidades manejo un campo de tipo smallint, este campo solo recibia enteros pero me veo en ...
  #1 (permalink)  
Antiguo 24/09/2011, 08:31
Avatar de timoteo666  
Fecha de Ingreso: agosto-2011
Ubicación: /home/Gdl
Mensajes: 242
Antigüedad: 12 años, 8 meses
Puntos: 11
Busqueda cambio tipo de dato??

Que tal amigos del foro, en una tabla de cantidades manejo un campo de tipo smallint, este campo solo recibia enteros pero me veo en la necesidad de modificarlo para que reciba numero de coma flotante (float), mi pregunta es:
¿Este cambio de tipo de datos puede afectarme los campos?
espero sus sugerencias y respuestas.
__________________
( + ) lineas de código ( - ) televisión
  #2 (permalink)  
Antiguo 24/09/2011, 08:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: cambio tipo de dato??

Cita:
¿Este cambio de tipo de datos puede afectarme los campos?
¿Afectarte en qué sentido?

Obviamente afectará a todos los datos almacenados en esa tabla y en ese campo. todos los enteros pasarán a ser FLOAT, por lo que se expresarán como de punto flotante, y en algunos casos puede que exista una conversión inexacta.
Esto último es porque el FLOAT es un modelo por aproximación y no de precisión (ver manual de referencia). Si lo que quieres es usar valores con cantidades fijas de decimales lo que te conviene es usar DECIMAL(l, d), donde l es la longitud total representable, incluyendo coma y cantidad de decimales, y d es la cantidad de decimales a usar. Este tipo de columna no representará los números por aproximación de mantisa y exponente, como el FLOAT.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 24/09/2011, 09:17
Avatar de timoteo666  
Fecha de Ingreso: agosto-2011
Ubicación: /home/Gdl
Mensajes: 242
Antigüedad: 12 años, 8 meses
Puntos: 11
Respuesta: cambio tipo de dato??

Gracias por contestar
En el sentido que me pueda cambiar los datos de los campos o que despues cuando quiera hacer una operacion me de resultados incoherentes, decimal me funcionara como para datos algo asi 123456.34?? o sera mejor doble?


Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Afectarte en qué sentido?

Obviamente afectará a todos los datos almacenados en esa tabla y en ese campo. todos los enteros pasarán a ser FLOAT, por lo que se expresarán como de punto flotante, y en algunos casos puede que exista una conversión inexacta.
Esto último es porque el FLOAT es un modelo por aproximación y no de precisión (ver manual de referencia). Si lo que quieres es usar valores con cantidades fijas de decimales lo que te conviene es usar DECIMAL(l, d), donde l es la longitud total representable, incluyendo coma y cantidad de decimales, y d es la cantidad de decimales a usar. Este tipo de columna no representará los números por aproximación de mantisa y exponente, como el FLOAT.
__________________
( + ) lineas de código ( - ) televisión
  #4 (permalink)  
Antiguo 24/09/2011, 10:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: cambio tipo de dato??

Si vas a trabajar siempre con una cantidad máxima de decimales, te conviene DECIMAL y no DOUBLE o FLOAT. Especialmente si los valores requieren cierta precisión, como por ejemplo con valores de moneda.
Te recomiendo no tenerle miedo y recurrir al manual de referencia de MySQL para despejar completamente tus dudas. Todo lo que necesitas saber de este tema está explicado perfectamente allí (yo lo hago constantemente para corroborar cosas): MySQL 5.0 Reference Manual :: 11 Tipos de columna :: 11.2 Tipos numéricos

De allí te remarco dos temas:
Cita:
El tipo FLOAT se usa para representar tipos numéricos aproximados. El estándar SQL permite una especificación opcional de la precisión (pero no del rango del exponente) en bits a continación de la palabra clave FLOAT entre paréntesis. La implementación de MySQL soporta esta especificación opcional de precisión, pero el valor de precisión se usa sólo para determinar el tamaño de almacenamiento. Una precisión de 0 a 23 resulta en una columna de precisión simple de cuatro bytes de tamaño FLOAT . Una precisión de 24 a 53 resulta en una columna de doble precisión de ocho bytes de tamaño DOUBLE .
Cita:
Los tipos DECIMAL y NUMERIC se implementan como el mismo tipo en MySQL. Se usan para guardar valores para los que es importante preservar una precisión exacta, por ejemplo con datos monetarios. Cuando se declara una columna de alguno de estos tipos, la precisión y la escala puede especificarse (y usualmente se hace).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 24/09/2011 a las 10:18

Etiquetas: campos, tabla, tipo
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 15:54.