Foros del Web » Programando para Internet » PHP »

Variable pierde decimal al multiplicar por cantidad

Estas en el tema de Variable pierde decimal al multiplicar por cantidad en el foro de PHP en Foros del Web. Hola amigos: Tengo el siguiente problema. Tengo una variable es esta: Código PHP: $product [ price ];  y cuando hago esto: Código PHP: $subtotal_prod  =  ...
  #1 (permalink)  
Antiguo 29/07/2009, 19:06
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Busqueda Variable pierde decimal al multiplicar por cantidad

Hola amigos:

Tengo el siguiente problema. Tengo una variable es esta:

Código PHP:
$product[price]; 
y cuando hago esto:

Código PHP:
$subtotal_prod $product[price] * ($qty);
$subtotal_prod number_format($subtotal_prod,2); 
se pierden los decimales que trae y me los pone en cero. Ejemplo 445,00 y debe ser 445, 56.

Que estoy haciendo mal???

Gracias.
  #2 (permalink)  
Antiguo 29/07/2009, 22:19
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Variable pierde decimal al multiplicar por cantidad

No veo error, solo dos cosas que ponen a trabajar de mas al interprete de PHP

$product[price] - Debes colocar price entre comillas, de lo contrario, PHP buscara la constante, como no esta definida, asumira que es una cadena.
* ($qty) - Los parentesis no son necesarios.

Lo que puedes hacer es forzar a que el resultado sea un numero real, doble o de punto decimal flotante:

Código:
    $subtotal_prod = (float)$product['price'] * $qty;
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 30/07/2009, 21:44
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Variable pierde decimal al multiplicar por cantidad

Sigo sin resolver esto porque al multiplicar me elimina los decimales.

No se si el problema está en multiplicar el elemento $product['price'] que pertenece a un arreglo por el valor cantidad.

Por favor si tienen una sugerencia se los agradezco.
  #4 (permalink)  
Antiguo 30/07/2009, 21:52
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 2 meses
Puntos: 14
Respuesta: Variable pierde decimal al multiplicar por cantidad

Hola , mira lo unico que se me ocurre que estes guardando estos dos datos numericos con el siguiente formato.

x,xx (ejemplo con coma)

lo cual php te trunca las cifras fraccionarias y te deja los enteros y ahi tu error.

Para expresar cifras fraccionarias y no tener problemas utiliza el formato:

xx.xx (es decir con punto)

Saludos!
  #5 (permalink)  
Antiguo 30/07/2009, 22:00
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Variable pierde decimal al multiplicar por cantidad

Jonatanc muchas gracias

Si efectivamente, lo estoy guardando en la bd con valor float x,x pero ahora no se como guardarlo porque si lo hago con float no me deja poner punto ni tampoco con decimal, int, ni double.

Cómo puedo ponerlo?
  #6 (permalink)  
Antiguo 30/07/2009, 22:12
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Variable pierde decimal al multiplicar por cantidad

Me confunde esto porque todas las operaciones anteriores a las del problema que planteo, me han guardado los decimales.

Sigo trancada...
  #7 (permalink)  
Antiguo 30/07/2009, 22:15
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 2 meses
Puntos: 14
Respuesta: Variable pierde decimal al multiplicar por cantidad

Hola , con double podes usar punto bajo MYSQL , saludos!
  #8 (permalink)  
Antiguo 30/07/2009, 22:21
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Nuevamente gracias Jonatanc, voy a probarlo... Saludos

No me deja crearlo con punto, solo con coma...

Última edición por GatorV; 31/07/2009 a las 09:33
  #9 (permalink)  
Antiguo 30/07/2009, 22:28
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 2 meses
Puntos: 14
Respuesta: Variable pierde decimal al multiplicar por cantidad

Que raro , yo utilizo la siguiente configuración de software :

* Servidor: localhost via TCP/IP
* Versión del servidor: 5.1.33-community
* Versión del protocolo: 10
* Usuario: root@localhost
* Juegos de caracteres de MySQL: UTF-8 Unicode (utf8)

Servidor web

* Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9
* Versión del cliente: 5.0.51a
* extensión PHP: mysql


Y la codificación utf8 , tu que versión de soft usas?.

Saludos
  #10 (permalink)  
Antiguo 31/07/2009, 12:16
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Variable pierde decimal al multiplicar por cantidad

Una posibilidad de esto es que MySQL tome el caracter para separacion de decimales (coma o punto) de la configuracion regional del equipo; no lo he probado, pero parece logico que si el equipo esta configurado para España el separador sea una coma, si esta configurado para Mexico, sea un punto.

kimmy, ya nos diras cuando tengas oportunidad de verificarlo.
__________________
- León, Guanajuato
- GV-Foto
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 16:32.