Sep
07

¿Como convertir Numeros a Letras con PHP?

Misma pregunta que me hacía hasta hace apenas ayer u_u me puse las pilas un rato, y ¡¡¡magia!!! quedó resuelto :D trabajé un sistema de facturación improvisado

Se pretende partir de un valor numérico como en el siguiente ejemplo, conseguir su valor escrito en Letras:

  • 159 = ciento cincuenta y nueve
  • 22 = veinte y dos
  • 3.1416 = tres con catorce decimales

Conseguí varios ejemplos, incluso uno de PHP Pear, pero no, ninguno me convenció. La mayoría por mal hechos, otros muy limitados, y los de PHP Pear por que no todos los servers lo tienen instalado /puf Todos funcionaban, pero uff lo hacían a su modo y bueeeno, valla problema lol

Y como siempre (para no perder la costumbre), tomé prestada alguna que otra línea de código ajeno para crear mi aplicación ^^ Lo convertí todo en una clase y listo, ahora puedo trabajar con mi clase algo así:

1er paso, descargarla:

2do paso, incluirla en donde trabajaremos.

php:

include(ABSPATH.'/includes/numerosALetras.class.php');
/*
Ahora puedes trabajar con la clase.
*/

 
  1. Creamos una instancia de la clase con un valor numérico, y mostramos el resultado.
    php:
    $n = new numerosALetras(159);
    echo $n->resultado;

    Aquí el resultado:

    ciento cincuenta y nueve
  2. Ahora, lo mismo que el punto anterior, pero re-utilizando la instancia de la clase para convertir y mostrar otro valor.
    php:
    $n = new numerosALetras(22);
    echo $n->resultado."<br />";
    echo $n->convertir(3.1416);

    Aquí el resultado:

    veinte y dos
    tres con catorce decimales
  3. En este último ejemplo traducimos una lista de valores, utilizando la misma instancia de la clase.
    php:
    $n = new numerosALetras;
    echo $n->convertir(22)."<br />";
    echo $n->convertir(3.1416)."<br />";
    echo $n->convertir(100)."<br />";
    echo $n->convertir(256)."<br />";
    echo $n->convertir(512)."<br />";
    echo $n->convertir(1024)."<br />";

    El resultado:

    veinte y dos
    tres con catorce decimales
    cien
    ciento cincuenta y seis
    quinientos doce
    mil veinte y cuatro

Dejo el código para quien pueda/necesite, y lo use, y si no pues sólo una miradita en el código y se diviertan criticando :)

Algunas referencias

6 Comments

Make A Comment
  • a gravatar Victor Bracco Said:

    Creo que hay algún error, porque donde pones:
    echo $n->convertir(256)."";
    en el cuadro de ejemplo el resultado es:
    ciento cincuenta y seis =S

  • a gravatar No es correcto Said:

    No es correcto: Dices
    16340 es dieciseis mil trescientos cuarenta y tu algoritmo traduce diez y seis mil trescientos cuarenta
    22047 es veintidos mil cuarenta y siete y tu algoritmo traduce veinte y dos mil cuarenta y siete

  • a gravatar Victor De la Rocha Said:

    uff! muchos errores. Gracias por su atención, veré que puedo hacer para solucionarlo.

    Al menos funciona para las cantidades esperadas en el sistema de facturación que improvisé. :P

  • a gravatar Khufus Asdruval Said:

    Tu algoritmo es bueno, solamente es cuestion de corregir el resultado, son solo errores de dedo, echale ganas.

  • a gravatar Victor De la Rocha Said:

    Espero el fin de semana hecharle un ojo a fondo en el código para solucionar ese detalle. Por el momento estaba probando esta version de Juan Luis, que funciona perfecto pero no le entiendo al código nada de nada :S ademas, este código hace todo en un ciclo.

  • a gravatar carlos Said:

    hola amigos que bueno sus codigos pero veo que en la version de Juan Luis bueno probando con el numero 100 no me salia ningun resultado, el caso es que demora como que quiere cargar la pagina pero no sale nada asi que puse otro numero y carga normal haber pruebe gracias

Comments RSS Feed   TrackBack URL

Leave a comment

top