Ver Mensaje Individual
  #10  
Antiguo 15-12-2006
gus_ggo gus_ggo is offline
Registrado
 
Registrado: dic 2006
Posts: 1
Reputación: 0
gus_ggo Va por buen camino
Como convetir numeros a letras

Hola que tal yo tengo un algoritmo en builder c++ que tal ves te pueda servir, este codigo yo lo utilice para inprimir en la cantidad de una factura en letras, esta sencillo ojala y te sirva, tambien lo tengo para delphi si lo necesitas; a esta funcion solo tienes que enviarle el los parametros de TotInv que es el numero a convertir a letras y la Moneda que es la teminacio de dolares USD o pesos MN:

Código:
TotInv = 1350.50
Moneda = -1

AnsiString Leyenda(AnsiString TotInv,AnsiString Moneda)
{
 String Unidades[29];
 String Decenas[7];
 String Centenas[9];
 float Decimal;
 int Importe,X;
 bool Cien,Miles,De;
 AnsiString ImptoStr,retleyenda;
 retleyenda = "";
 Unidades[0] = "UN";
 Unidades[1] = "DOS";
 Unidades[2] = "TRES";
 Unidades[3] = "CUATRO";
 Unidades[4] = "CINCO";
 Unidades[5] = "SEIS";
 Unidades[6] = "SIETE";
 Unidades[7] = "OCHO";
 Unidades[8] = "NUEVE";
 Unidades[9] = "DIEZ";
 Unidades[10] = "ONCE";
 Unidades[11] = "DOCE";
 Unidades[12] = "TRECE";
 Unidades[13] = "CATORCE";
 Unidades[14] = "QUINCE";
 Unidades[15] = "DIECISEIS";
 Unidades[16] = "DIECISIETE";
 Unidades[17] = "DIECIOCHO";
 Unidades[18] = "DIECINUEVE";
 Unidades[19] = "VEINTE";
 Unidades[20] = "VEINTIUN";
 Unidades[21] = "VEINTIDOS";
 Unidades[22] = "VEINTITRES";
 Unidades[23] = "VEINTICUATRO";
 Unidades[24] = "VEINTICINCO";
 Unidades[25] = "VEINTISEIS";
 Unidades[26] = "VEINTISIETE";
 Unidades[27] = "VEINTIOCHO";
 Unidades[28] = "VEINTINUEVE";
 Decenas[0] = "TREINTA";
 Decenas[1] = "CUARENTA";
 Decenas[2] = "CINCUENTA";
 Decenas[3] = "SESENTA";
 Decenas[4] = "SETENTA";
 Decenas[5] = "OCHENTA";
 Decenas[6] = "NOVENTA";
 Centenas[0] = "CIEN";
 Centenas[1] = "DOSCIENTOS";
 Centenas[2] = "TRESCIENTOS";
 Centenas[3] = "CUATROCIENTOS";
 Centenas[4] = "QUINIENTOS";
 Centenas[5] = "SEISCIENTOS";
 Centenas[6] = "SETECIENTOS";
 Centenas[7] = "OCHOCIENTOS";
 Centenas[8] = "NOVECIENTOS";
 Importe = StrToFloat(TotInv);
 Decimal =  FormatFloat("#,##0.00",StrToFloat(TotInv)) - Importe;
 ImptoStr = "(";
 Cien = false;
 Miles = false;
 De = false;

 if(Importe >= 1000000)
 {
  X = Importe/1000000;
  De = true;
  Importe = Importe % 1000000;
  if (X != 1)
        ImptoStr = ImptoStr + " " + Unidades[X-1] + " MILLONES ";
  else
        ImptoStr = ImptoStr + "UN MILLON";
 }
 if (Importe != 0 )
    De = false;
 if (Importe >= 100000)
    {
      X = Importe/100000;
      Importe = Importe % 100000;
      ImptoStr = ImptoStr + " " + Centenas[X-1];
      Miles = true;
      if(X == 1)
        Cien = True;
    }
 if(Importe >= 30000)
    {
      Miles = True;
      X = Importe / 10000;
      Importe = Importe % 10000;
      if(Cien)
      {
        ImptoStr = ImptoStr + "TO";
        Cien = False;
      }
      ImptoStr = ImptoStr + " " + Decenas[X-3];
      if ( (Importe < 10000) & (Importe >= 1000))
        ImptoStr = ImptoStr + " Y";
    }
 if((Importe >= 1000) & (Importe < 30000))
    {
      Miles = True;
      X = Importe / 1000;
      Importe = Importe % 1000;
      if(Cien)
      {
        ImptoStr = ImptoStr + "TO";
        Cien = False;
      }
      ImptoStr = ImptoStr + " " + Unidades[X-1];
    }
    if(Miles)
    {
      ImptoStr = ImptoStr + " MIL";
      Cien = False;
    }
    if(Importe >= 100)
    {
      X = Importe / 100;
      Importe = Importe % 100;
      ImptoStr = ImptoStr + " " + Centenas[X-1];
      if(X == 1)
        Cien = True;
    }
    if(Importe >= 30)
    {
      X = Importe / 10;
      Importe = Importe % 10;
      if(Cien)
      {
        ImptoStr = ImptoStr + "TO";
        Cien = False;
      }
      ImptoStr = ImptoStr + " " + Decenas[X-3];
      if(Importe != 0)
        ImptoStr = ImptoStr + " Y";
    }
    if(Importe >= 1)
    {
      if(Cien)
        ImptoStr = ImptoStr + "TO";
      ImptoStr = ImptoStr + " " + Unidades[Importe-1];
    }
    if(Moneda == -1)
      if(De)
        retleyenda = ImptoStr + " DE PESOS " + FormatFloat("00",Decimal * 100) + "/100 M.N.)";
      else
        retleyenda = ImptoStr + " PESOS " + FormatFloat("00",Decimal * 100) + "/100 M.N.)";
    else
      retleyenda = ImptoStr + " DOLARES " + FormatFloat("00",Decimal * 100)+ "/100 USD)";


 return retleyenda;
}

Última edición por dec fecha: 15-12-2006 a las 22:32:40.
Responder Con Cita