Foros del Web » Programando para Internet » PHP »

¿Cómo separar los decimales en un nº?

Estas en el tema de ¿Cómo separar los decimales en un nº? en el foro de PHP en Foros del Web. Hola a [email protected]!! Me explico, estoy intentando hacer funcionar un módulo de pago para oscommerce por medio de ibercaja (todo esto es lo de menos, ...
  #1 (permalink)  
Antiguo 07/07/2005, 17:52
Avatar de rbczgz  
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.209
Antigüedad: 14 años
Puntos: 148
¿Cómo separar los decimales en un nº?

Hola a [email protected]!!

Me explico, estoy intentando hacer funcionar un módulo de pago para oscommerce por medio de ibercaja (todo esto es lo de menos, pero por ilustrar un poco...)

La cuestión es la siguiente, en la pasarela de pago de ibercaja hay que enviar el precio en dos partes, una la parte entera y otra la parte decimal, entonces, oscommerce da el precio de forma 12,34, pasamos esto a entero multiplicando por 100: $precio = 21,34 * 100 lo que nos da una cadena 1234, pero para pasarlo a ibercaja debe estar separada la parte decimal de la entera.

Teniendo en cuenta que tengo muy poca idea de PHP y he revisado el manual de arriba a abajo y de abajo a arriba sin encontrar nada que me de una idea...

¿Alguien me puede echar un cable para hacer esta operación?

Estoy seguro de que para los expertos que andan por aquí es muy sencillo pero yo llevo horas y horas rompiéndome la cabeza sin conseguir solucionarlo.

Gracias por anticipado.
  #2 (permalink)  
Antiguo 08/07/2005, 01:36
 
Fecha de Ingreso: septiembre-2003
Ubicación: Sentado frente a un computador
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 0
$tok = strtok ($fecha,"/");
$i=0;
while ($tok) {
$fecha1[$i]=$tok;
$tok = strtok ("/");
$i++;
}
$d=$fecha1[0];
$m=$fecha1[1];
$a=$fecha1[2];


con este codigo yo separo las fechas, esperoque ete sirva, yo creoque es bastante claro
  #3 (permalink)  
Antiguo 08/07/2005, 04:26
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 288
Antigüedad: 12 años, 5 meses
Puntos: 1
prueba con number_format


number_format
(PHP 3, PHP 4 >= 4.0.0)

number_format -- formatea un número en grupos de miles
Descripción

string number_format (float number, int decimals, string dec_point, string thousands_sep)

number_format() devuelve la versión formateada de number. Esta función acepta tanto uno, como dos o cuatro parámetros (tres no):

Si sólo se da un parámetro, number será formateado sin decimales, pero con una coma (",") entre cada grupo de miles.

Si se dan dos parámetros, number será formateado con decimals decimales con un punto (".") al principio, y una coma (",") entre cada grupo de miles.

Si se dan cuatro parámetros, number será formateado con decimals decimales, dec_point en vez del punto (".") antes de los decimales y thousands_sep en vez de la coma (",") entre cada grupo de miles.
  #4 (permalink)  
Antiguo 08/07/2005, 09:54
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 6 meses
Puntos: 2
Hola, solo como comentario, diria que number_format solamente es para formatearlo con otro formato, no se le tendria que dar ese uso... Es solo un comentario.

Bueno hice esto es muy simple y bastante claro, y cumple lo que tu quieres, tienes 2 variables, una con la parte entera y la otra con los decimales...

Código PHP:
<?php

$precio 
453.45;

list(
$precio_entero,$precio_decimal) = explode(".",$precio);

echo 
$precio_entero."------------".$precio_decimal;

?>
Saludos.
  #5 (permalink)  
Antiguo 08/07/2005, 11:31
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
number_format(), no es solo para formatear, estoy seguro que podrias hacer algo con esa funcion.
Por otro lado, rbczgz, tendrias que ver como es que recibes esos precios, es decir.. como cadenas o como numeros. Pregunto esto porque si recibes algo asi como 12.3 (con punto como separador de decimales) esta todo bien, pero "12,2" puede ser interpretadp como una cadena.
Si es el primer caso, este codigo redulta bastante sencillo, usando floor() para sacar el entero:
Código PHP:
$numero 12.3;
$entero floor($numero);
$decimales $numero-$entero
Saludos
  #6 (permalink)  
Antiguo 08/07/2005, 20:14
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 6 meses
Puntos: 2
Realmente me exprese mal antes. Vuelvo a repetir, se puede hacer cosas con number_format pero yo no le daria otro uso que no sea el de formatear ya que este (creo) fue creado para darle forma a los numeros. Tu script es equivalente al siguiente:
Código PHP:
<?php

$numero 
12.3;
$entero number_format($numero,0);
$decimales $numero-$entero;

?>
Y definitivamente con number_format se pueden hacer muchas cosas, pero yo no le daria otros usos.

Este script como el de Fran86 los decimales los imprime de esta manera: 0.45
El primer que he puesto los formatea de esta forma: 45
Solamente como un entero trata a los decimales, creo que si sabemos que son decimales no habra equivocaciones. Trata de ver la diferencia porque un error con esto podria ser muy grave . Saludos.
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 21:04.