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

entero a decimal

Estas en el tema de entero a decimal en el foro de Mysql en Foros del Web. Buenas estimados, Tengo una tabla donde uno de los campos es numérico con enteros. El genio de mi cliente se dió cuenta que ahora lo ...
  #1 (permalink)  
Antiguo 03/10/2013, 07:18
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
entero a decimal

Buenas estimados,

Tengo una tabla donde uno de los campos es numérico con enteros.

El genio de mi cliente se dió cuenta que ahora lo quiere con Decimales, entonces en un simple acto paso desde phpmyadmin, de INT a Decimal (5,2) y algunos campos no se ven bien:

Por ejemplo hay un valor que esta en 1000 y cuando lo paso a decimal queda 999.99

Alguna sugerencia para pasarlo y que sea transparente?

Gracias,
Gustav.
  #2 (permalink)  
Antiguo 03/10/2013, 07:45
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, 4 meses
Puntos: 2658
Respuesta: entero a decimal

Bueno, eso sucede porque estás definiendo incorrectamente el rango del DECIMAL...
Ese tipo de cambios requiere que leas el manual de referencia. Siempre:
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), por ejemplo:

salary DECIMAL(5,2)

En este ejemplo, 5 es la precisión y 2 es la escala. La precisión representa el número de dígitos decimales significativos que se almacenan para los valores, y la escala representa el número de dígitos que pueden almacenarse a continuación del punto decimal.

Desde MySQL 5.0.3, los valores DECIMAL y NUMERIC se almacenan en formato binario. Antes de 5.0.3, MySQL almacena los valores DECIMAL y NUMERIC como cadenas de caracteres, en lugar de binario. .Un carácter se usa para cada dígito del valor, el punto decimal (si la escala es mayor que 0), y el signo '-' (para números negativos). Si la escala es 0, los valores DECIMAL y NUMERIC no contienen punto decimal o parte fraccional.

SQL estándar requiere que la columna salary sea capaz de almacenar cualquier valor con cinco dígitos y dos decimales. En este caso, por lo tanto, el rango de valores que puede almacenarse en la columna salary es desde -999.99 a 999.99. MySQL fuerza este límite desde MySQL 5.0.3. Antes de 5.0.3, MySQL 5.0 variaba este límite de forma que, en el límite positivo del rango, la columna podía almacenar números hasta 9999.99. (Para números positivos, MySQL 5.0.2 y anteriores usaba el byte reservado para el signo para extender el límite superior del rango.)

En SQL estándar, la sintaxis DECIMAL(M) es equivalente a DECIMAL(M,0). Similarmente, la sintaxis DECIMAL es equivalente a DECIMAL(M,0), donde la implementación se permite para decidir el valor de M. Ambas formas de los tipos DECIMAL y NUMERIC se soportan en MySQL 5.0. El valor por defecto de M es 10.
Traduciendo finalmente, si quieres tener un numero de hasta cinco dígitos enteros y dos decimales, el dato se debe definir como de longitur (mantisa) 5+1+2, es decir: DECIMAL(8, 2).
__________________
¿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 03/10/2013, 07:53
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: entero a decimal

Estimadisimo,

muchisimas gracias por todo!
Gustav.

Etiquetas: campo, decimal, entero, php, tabla
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 19:09.