Page 1
Getting the screen size in Java
Page 2
Index
Ver este artículo en español 
Page 3
Rounding a number to n decimal places

Sorry, this page is not available in English. Displaying version for locale : es

Convertir en palabras un número

Alexander Hristov

La siguiente rutina de Java convierte un número arbitrario ( 123 ) en su correspondiente nombre en castellano (ciento veintitres ). Útil en aplicaciones de gestión, emisión de informes y en general en cualquier lado donde una cantidad monetaria deba quedar reflejada con claridad sin dudas. Licencia LGPL

 

NumeroCastellano.java
 
/**
 * NumeroCastellano - Convierte un n?mero a castellano
 * Copyright (c) 2006 Alexander Hristov .
 * 
 * Este programa es Software Libre; usted puede redistribuirlo
 * y/o modificarlo bajo los t?rminos de la "GNU General Public
 * License" como lo publica la "FSF Free Software Foundation",
 * o (a su elecci?n) de cualquier versi?n posterior.
 *
 * Este programa es distribuido con la esperanza de que le ser?
 * ?til, pero SIN NINGUNA GARANTIA; incluso sin la garant?a
 * impl?cita por el MERCADEO o EJERCICIO DE ALGUN PROPOSITO en
 * particular. Vea la "GNU General Public License" para m?s
 * detalles.
 * 
 * Usted debe haber recibido una copia de la "GNU General Public
 * License" junto con este programa, si no, escriba a la "FSF
 * Free Software Foundation, Inc.", 59 Temple Place - Suite 330,
 * Boston, MA  02111-1307, USA.
 * 
 */
public class NumeroCastellano {
  private static String[] _grupos = 
    { "", "millon","billon","trillon"  };
  
  private static String[] _unidades = 
    { "","un","dos","tres","cuatro","cinco","seis","siete","ocho","nueve" };
  
  private static String[] _decena1 = 
    { "","once","doce","trece","catorce","quince",
      "dieciseis","diecisiete","dieciocho","diecinueve" };
  private static String[] _decenas = 
    { "","diez","veinte","treinta","cuarenta","cincuenta",
      "sesenta","setenta","ochenta","noventa"};
  
  private static String[] _centenas = 
    { "","cien","doscientos","trescientos","cuatrocientos",
      "quinientos","seiscientos","setecientos","ochocientos","novecientos"};
 
  public static String millarATexto( int n ) {
    if (n == 0)
      return "";
      
    int centenas = n / 100;
    n = n % 100;
    int decenas = n / 10;
    int unidades = n % 10;
    
    String sufijo = "";
    
    if ( decenas == 0 && unidades != 0 ) 
      sufijo = _unidades[unidades];
    
    if ( decenas == 1 && unidades != 0 )
      sufijo = _decena1[unidades];
    
    if ( decenas == 2 && unidades != 0 )
      sufijo   = "veinti"+_unidades[unidades];
    
    if ( unidades == 0) 
      sufijo = _decenas[decenas];
    
    if ( decenas > 2 && unidades != 0)
      sufijo = _decenas[decenas] + " y " + _unidades[unidades];
    
    if (centenas != 1)
      return _centenas[centenas] + " " + sufijo;
    
    if ( unidades == 0 && decenas == 0)
      return "cien";
    
    return "ciento "+sufijo; 
  }
  
  

  public static String numeroACastellano( long n  ){
    String resultado = "";
    int grupo = 0;
    while ( n != 0 && grupo < _grupos.length ) {
      long fragmento = n % 1000000;
      int millarAlto = (int) (fragmento / 1000);
      int millarBajo = (int) (fragmento % 1000);
      n = n / 1000000;
      
      String nombreGrupo = _grupos[grupo];
      if (fragmento > 1 && grupo > 0)
        nombreGrupo += "es";
      
      
      if ((millarAlto != 0) || (millarBajo != 0)) {
        if (millarAlto > 1)
           resultado = millarATexto(millarAlto) + " mil " + 
                       millarATexto(millarBajo) + " " +
                       nombreGrupo + " " +
                       resultado;
                    
        
        if (millarAlto == 0) 
          resultado = millarATexto(millarBajo) + " " +
                      nombreGrupo + " "+
                      resultado;
                      
        if (millarAlto == 1)
           resultado = "mil " + millarATexto(millarBajo) + " " +
                       nombreGrupo + " " +
                       resultado;
      }
      grupo++;
    }
    return resultado;
  }
  
  public static void main(String[] args) {
    System.out.println(  numeroACastellano(123) );
  }
}
 


Source code



 

Comments

Jul 02, 2008 at 00:20 Sent by ryosal
Hola. Igual que newbieenjava. quisiera, por favor, el codigo javascript completo, o sea que incluya el formulario para pedir del visitante el numero y su respectiva reproduccion en una pagina web. Muchisimas gracias.
Apr 12, 2008 at 16:53 Sent by newbieenjava
pero yo quiero que este programa me pida en pantalla el numero que quiero (el numero que yo quiera) pasar a palabras, como serial el nuevo codigo???
Dec 14, 2007 at 22:14 Sent by anonymous
Para el numero 1 escribe "un"
Dec 11, 2007 at 02:33 Sent by Nushio
Muchisimas gracias por el programa. Con unas ligeras modificaciones quedó listo para uso personal. Gracias de nuevo!
Aug 03, 2007 at 22:04 Sent by anonymous
Gracias Grandes Conchas de Tu Madre !!!!!
Aug 03, 2007 at 22:03 Sent by anonymous
Gracias !!!
Mar 27, 2007 at 05:11 Sent by anonymous
OK

 

Add a Comment

Name (optional)
EMail (optional, will not be displayed)

Text