Como separar la parte entera de un número y sus decimales en PHP

Al trabajar con Codeka MX tuve que hacer una adaptación al momento de imprimir el total de una factura con letra.

Ejemplo del uso de la función

En México se acostumbra poner la parte entera de la cantidad con letra, seguido de un xx/100 M.N. para la parde decimal.

Por ejemplo:

3,527.50 sería tres mil quinientos veintisiete pesos 50/100 M.N.

Para esto hay que separar la parte entera de la parte decimal.

Después de ver varios enfoques, el que más me gustó por su sencillez fue utilizando la función explode.

Siguiendo con el ejemplo, supongamos que la variable $total contiene el valor que quiero separar.

$total = 3527.50

$decimales = explode(“.”,$total);

la variable decimales es un arreglo, de manera que almacena en el indice 0 lo que encuentre antes del punto, y en el indice 1 lo que sigue de manera que:

$decimales[0] contiene el valor de 3527

y

$decimales[1] contiene el valor de 50

Y eso es todo, así de simple.

20 thoughts on “Como separar la parte entera de un número y sus decimales en PHP

  1. Hola

    Primero que todo, felcitaciones por tu blog. me ha servido mucho.

    Tengo una consulta, lo que pasa es que he estado usando el codekamx en mi pais Chile. pero quisira modificarlo para que no me aparesacan los decmales ya que aqui solo usamos numeros enteros.

    Con lo que explicabas mas arriba, estuve tratando de modificar el archivo imprimir_factura.php pero me salia un error al vizualizar la factura.

    Ademas puedo quitarle 50/100 M.N. ya que en Chile no usamos esto y solo quede como pesos ?

    Estare muy agradecido.

    Atte.

    Patricio Fuentes

  2. Te vas a encontrar con casi el mismo problema que yo pero con la ventaja de que ya tengo algo de camino recorrido con codeka mx.

    Verás, en todo el sistema encontrarás la función number_format de PHP. Para codeka mx modifique la función para que 2 decimales usando la coma como separador de miles y el punto como indicador de decimales (en España es al revés) supongo que tu puedes colocarle 0, en lugar del dos.

    $total2= number_format($total,2,".",",");

    quedando así :

    $total2= number_format($total,0,".",",");

    Ahora con respeco a la modificación del archivo imprimir_factura.php , alrededor de la línea 153 del archivo puedes modificarla a algo parecido a esto:

    Modificando el archivo imprimir_factura.php de Codeka MX

    $pdf->Cell(35,4,strtoupper($nw->toWords($decimales[0], "es") ." pesos"),0,0,'L',0);

    Con eso dejaría de mostrar la leyenda M.N. xx/100.

    Lo pruebas y me dices que tal ok?

  3. oye amigo excelente articulo!!!!!!!!!!, solo tengo una duda, como puedo hacer para que al momento de realizar la venta todo sea de contado y solo los que eliga se vayan a credito, ya que cuando vendo automaticamente se queda sin cobrar.

    de antemano muchas gracias

  4. Hola queria saber como puedo hacer tengo un numero del cual 4563.13
    necesito separar la parte entera luego un decimal y el segundo decimal redondearlo a 0 o 5

    es decir que el numero quede 4563.15 o 4563.00

    desde ya muchas gracias

    • Puedes intentar sumarle .5 al numero y luego dejar solamente la parte entera.

      Ej,

      4563.15 + 0.5 = 4563.65 -> 4563.00

      4563.68 + 0.5 = 4564.18 -> 4564.00

      ¿Es lo que buscas?

  5. el tema es asi los numeros me dan 4513.96 4513.62 esos numeros me da yo necesito que me de 0 o 5 al final para que terminen en 0 o 5 como lo puedo en hacer en php

    tengo 4 numeros y saco el porcentaje del porcentaje redondearlos a 0 o 5

    gracias espero tu respuesta

    es el primer foro que me contestan re copado segui asiii

  6. El principal problema Bárbara es que no te sabes explicar. Por ejemplo no se cuando el resultado te debe de dar 0 o 5 …

    Si pudieras ser más clara sobre cuando debe de salir cero y cuando 5 el programa en php se escribe solito.

  7. A ver si te puedo explicar

    debo sacar 4 porcentajes ej

    %25
    %25
    %15
    %35

    cuando haces las cuentas quedan por ejemplo 4513.13

    lo que necesito es que ese decimal 13 se convierta en 10 o en 15 no importa en cual de los dos numeros termine sino que haga el cambio debe ser multiplo de 5 entendes porque a la vez estos valores se reparten en 9 valores mas que eso no importa ya lo hice entendes ahora?

  8. porque mi rango de distribucion comienza en 0.05 esos montos deben ser distribuidos en 0.05 0.10, 1.10 y asi sucesivamente.

    entendes

  9. Hola, es muy bueno que ayudes, mira deseo saber como cambiar el color verde de fondo del programa codeka.- estoy buscando en ../estilos/ pero no se donde cambio el color

    de antemano muchas gracias

  10. *ingresar un numero y reportar la suma de sus
    digitos que simplemente sean primos.
    ejemplo:
    NUMERO: 1235
    SUMA:8

    *ingresar un numero decimal y reportar la cantidad
    de digitos de la parte entera y la parte dicimal.
    ejemplo:
    NUMERO: 814.98
    PARTE ENTERA: 3
    PARTE DECIMAL:0.98

¡Me encantaría saber que opinas!

%d bloggers like this: