Foros del Web » Programando para Internet » PHP »

multiplicar unas variables con decimales.

Estas en el tema de multiplicar unas variables con decimales. en el foro de PHP en Foros del Web. Buenas compañeros; tengo una cesta de la compra, y tengo que multiplicar dos variables, una es la cantidad y la otra es el precio. Pero ...
  #1 (permalink)  
Antiguo 18/04/2006, 04:39
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
multiplicar unas variables con decimales.

Buenas compañeros;

tengo una cesta de la compra, y tengo que multiplicar dos variables, una es la cantidad y la otra es el precio. Pero me falla a la hora de multiplicar una cantidad por un precio "CON DECIMALES...". la multiplicación la he hecho así:

$subto=$valor['cantidad']*$precio;

y claro, si multiplico 1* 22'5 me da igual a= 22

Alguien me podría decir como hago para que también multiplique los decimales?? hay alguna función que lo haga????

Muchas gracias de antemano

Saludosss!!!
  #2 (permalink)  
Antiguo 18/04/2006, 04:59
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 18 años
Puntos: 2
En principio, no deberias tener problemas. Pero, ¿porque pusiste 22'5 en lugar de 22.5? ¿error de tipeo?. Porque si tenés:

Código PHP:
<?
$decimal 
"22'5";
echo 
$decimal;
?>
eso te va a imprimir, 22, ya que php convierte automáticamente la cadena 22'5 en 22 para realizar la multiplicación.
Saludos.
  #3 (permalink)  
Antiguo 18/04/2006, 07:36
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 2 meses
Puntos: 5
Amigo en principio creo que el resultado de 22.5 (o muy bien como lo escribiste 22'5) seria 23 y "no 22" amenos que el php tenga una configuración inverza a lo que digo.- (cosa que desconosco)

ahora para la solución al problema planteado, se me ocurre que podrias formatear el valor resultado antes de aplicarle alguna u otra accion. puedes usar el number_format

Código PHP:
<?
$op 
22.5*1;
$op=number_format($op,2,'.','');
echo 
"$op";
// esto Imprime 22.50
?>
Con esta funcion puedes definir hasta cuantos digitos decimales quieres mostrar, en este caso puse el valor de dos (2), tambien puedes definir si quieres usar decimales separados por coma o punto, y tambien definir el uso de los miles separados por coma o putos.-

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com

Última edición por xyyy7; 18/04/2006 a las 07:42
  #4 (permalink)  
Antiguo 18/04/2006, 08:43
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
muchas gracias por vuestras respuestas, ahora mismo voy a probar number_format a ver que tal sale con dos decimales va de sobra jejejeje

muchísimas gracias
  #5 (permalink)  
Antiguo 19/10/2006, 11:53
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
pues no lo consigo:

pongo 3,55 + 1,40 y me da igual a = 4

Código PHP:

$precio
=$row["precio"];
$subto=$valor['cantidad']*$precio
$op=number_format($subto2','' ');

$suma=$suma+$op
pero no me toma encuenta la ',' como debo hacer? para que me haga la suma correctamente de los decimales usando la coma????

Muchas gracias por adelantado
  #6 (permalink)  
Antiguo 19/10/2006, 11:59
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Cambia la coma por un punto antes de realizar la operacion con, x ejemplo, str_replace. Lo q no sé es xq formateas los números con comas cuando para realizar operaciones debe usarse el punto. X eso tampoko veo sentido a usar number_format antes de realizar la operación.

Lo "lógiko" (para mí) es formatearlo antes de realizar una salida de datos pues si debo insertar en la base de datos la coma puede dar un error en la consulta al creer q metes un campo más.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #7 (permalink)  
Antiguo 19/10/2006, 12:00
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
primero q nada e inadmisible!!!
php como todo lenguaje de programacion los numeros decimales no llevan "," (coma) llevan "." (punto)
luego si qures mostrar un resultado q no redondee, lo q podes usar es
$suma=(float)$valor1+$valor2;
con (float) lo q hacemos es forzar a q el resultado sea decimal
el unico problema de esto es q cuando se genere un numero periodico te van a salir muchisimo deicmales y ahi es donde usarmos number_format()
slaudos y espero te sirva la ayuda
  #8 (permalink)  
Antiguo 19/10/2006, 12:06
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
ostris, ya decia yo. lo había preparado con un punto como indica el manual, y no con coma. pero resulta que mi colega ha creado toda la base de datos de productos con comas en vez de con puntos, y por no hacerle cambiar las comas por los puntos directamente en la base de datos pos intentar que sume con comas. pero se ve que no se puede hacer sniff...!!!

hay alguna posibilidad de que con alguna función me coja la coma y me la convierta en un punto y luego poder hacer la suma???????? o algo para solucionar el problema? se os ocurre algo???

jos que lio... no se que hacer con esto...ainss

gracias de antemano por las aclaraciones, para otra no me pilla, lo prometo
saludoss!!
  #9 (permalink)  
Antiguo 19/10/2006, 12:13
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
se me ocurre.. podría hacer algún tipo de explode para separar la coma del resto, y convertirla con alguna función que exista en php???? hay alguna función que me pueda servir para convertir una coma en un punto?????????
  #10 (permalink)  
Antiguo 19/10/2006, 12:20
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Como dije anteriormente str_replace es tu función.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
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 02:53.