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

precio decimal o float, como arreglo esto..

Estas en el tema de precio decimal o float, como arreglo esto.. en el foro de Mysql en Foros del Web. hola , estoy con un sistema de php, que guardo los productos en una base de datos, los productos, sus precios, manejan centavos , anteriormente, ...
  #1 (permalink)  
Antiguo 13/12/2012, 15:18
 
Fecha de Ingreso: junio-2010
Mensajes: 752
Antigüedad: 13 años, 10 meses
Puntos: 5
precio decimal o float, como arreglo esto..

hola , estoy con un sistema de php, que guardo los productos en una base de datos, los productos, sus precios, manejan centavos , anteriormente, busque que tipo de dato seria el mejor...

decidi colocar en tipo de dato en el campo de la tabla. sea "decimal(10,0)" (entre float y otros tipos mas)


bueno el tema es que cuando cargo los datos. los cargo...

con por ejemplo... 60 ...
lo ideal seria que me lo guarde... 60,00 no?

pero me lo guarda con 60...

y bueno apartir de ahi , toma los datos como enteros sin la coma...y queda, asi...
asi quede que los productos, no manejan centavos...
les puedo colocar... asi..


echo $precio.",00"; pero es cualquiera.... jaja

por ejemplo en el momento de pago, si me paga con centavos... en la resta que tengo ,no me los toma...

45 - 60,50 =15

tengo un producto de 45 pesos , me paga con 60,50 y la cuenta me da 15...
esta mal..

gracias...
  #2 (permalink)  
Antiguo 13/12/2012, 16:20
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: precio decimal o float, como arreglo esto..

Hola vani18:

Mucho ojo... en MySQL, el separador de decimales no es la coma, sino el punto... la coma sirve como separador de campos... checa este ejemplo:

Código MySQL:
Ver original
  1. mysql> select 45 - 60,50;
  2. +---------+----+
  3. | 45 - 60 | 50 |
  4. +---------+----+
  5. |     -15 | 50 |
  6. +---------+----+
  7. 1 row in set (0.02 sec)

Observa que en el primer caso el resultado SON DOS COLUMNAS, una que sería el resultado de la resta entre (45 y 60) y la otra que sería el número 50 en una columna indepentiende. Observa ahora lo que pasa con cambiando la coma por punto:

Código MySQL:
Ver original
  1. mysql> select 45 - 60.50;
  2. +------------+
  3. | 45 - 60.50 |
  4. +------------+
  5. |     -15.50 |
  6. +------------+
  7. 1 row in set (0.00 sec)

En este caso el resultado ES UNA COLUMNA con el resultado de la resta entre (45 y 60.50)...

Finalmente, mucho ojo con mezclar temas en los foros. Este tema es exclusivo de MySQL, por lo que no vale hacer preguntas sobre PHP...

Saludos
Leo.
  #3 (permalink)  
Antiguo 13/12/2012, 17:03
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: precio decimal o float, como arreglo esto..

Cita:
decidi colocar en tipo de dato en el campo de la tabla. sea "decimal(10,0)" (entre float y otros tipos mas)
Además de lo que te dice Leonardo, al definir la columna como DECIMAL(10,0) lo que le estás diciendo es que vas a usar un decimal con 10 dígitos de longitud, y con cero (0) decimales...
Absolutamente nada que ver con lo que quieres.
Este tipo de cosas se resuelve simplemente leyendo el manual de referencia, que es gratuito y está ON-LINE (Ver MySQL::11.2. Tipos numéricos):
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:

Código MySQL:
Ver original
  1. 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.

El máximo rango de los valores DECIMAL y NUMERIC es el mismo para DOUBLE, pero el rango real para un valor dado en una columna DECIMAL o NUMERIC puede restringirse con la precisión o escala para una columna dada. Cuando en tal columna se asigna un valor con más dígitos siguiendo el punto decimal de los permitidos por la escala específica, el valor se convierte a tal escala. (El comportamiento preciso depende del sistema operativo, pero generalmente el efecto es que se trunca al número de dígitos permitidos.)
Leer el manual es lo que hacemos todos los que estamos en esto. Nadie se acuerda de todo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 13/12/2012, 19:55
 
Fecha de Ingreso: junio-2010
Mensajes: 752
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: precio decimal o float, como arreglo esto..

gracias , le cambie a DECIMAL(5,2) y se arreglaron masomenos las cosas...

Etiquetas: decimal, float, php, precio, tabla, arreglos, campos
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:01.