Convertidor de numeros a letras en C#
Hola amigos pues ayer sabado 11 de mayo me puse a la idea de crear una super clase para convertir un numero en letras para poder usarla en varias aplicaciones:
esta super sencilla pero cumple que lo con su cometido.
hasta ahorita convierte el maximo valor de 999999999
he aqui el codigo:
Para lo que deseen les dejo el proyecto:
IDE. Visual Studio 2012
Lenguaje: C#
Compilacion: DLL
Peso:2.43 MIB
Proyecto prueba: Prueba_Full
Saludos y tenga lindo día.
Visita mis otras paginas:
esta super sencilla pero cumple que lo con su cometido.
hasta ahorita convierte el maximo valor de 999999999
he aqui el codigo:
using System;
using System.Collections.Generic;
using System.Text;
/*
* Autor: Ing. Jose
Israel Gomez Rodriguez. (Joshyba)
*clase para convertir numero a letras
* 1=uno
* 100=cien
* 1000 = mil
* 2569 = dos mil quinientos sesenta y nueve
* 19 = diecinueve
*/
namespace NumeroLetras
{
public class Convertir
{
public Convertir()
{
}
string[] NumeroBase ={
"",
"uno",
"dos",
"tres",
"cuatro",
"cinco",
"seis",
"siete",
"ocho",
"nueve",
"diez",
"once",
"doce",
"trece",
"catorce",
"quince",
"dieciseis",
"diecisiete",
"dieciocho",
"diecinueve",
};
string[] NumeroBase2 = {
"",
"",
"veinte",
"treinta",
"cuarenta",
"ciencuenta",
"sesenta",
"setenta",
"ochenta",
"noventa"
};
public string Convertir_Numero(string num)
{
string Resultado = "";
int Tama_Cadena = num.Length;
if (Tama_Cadena < 4)//3
Resultado =
Trio(Tama_Cadena,num);
else if (Tama_Cadena < 7)//6
{
int
millares = Tama_Cadena - 3;
if(num.Substring(0,1)=="1" && Tama_Cadena==4)
Resultado = "mil " +
Trio(3, num.Substring(millares, 3));
else
Resultado = Trio(millares,
num.Substring(0, millares)) + " mil " + Trio(3, num.Substring(millares, 3));
}
else if (Tama_Cadena < 10)//9
{
int millares = Tama_Cadena - 3;
int millon = Tama_Cadena - 6;
if (num.Substring(0, 1) == "1" && Tama_Cadena == 7)
{
if(Trio(3, num.Substring(millon,
3))=="")
Resultado = "un
millon " + Trio(3,
num.Substring(millares, 3));
else
Resultado = "millon " +
Trio(3, num.Substring(millon, 3)) + "
mil " + Trio(3, num.Substring(millares, 3));
}
else
Resultado = Trio(millon,
num.Substring(0, millon)) + " milllones
" + Trio(3, num.Substring(millon, 3)) + " mil " +
Trio(3, num.Substring(millares, 3));
}
else if (Tama_Cadena < 13)
Resultado = Trio(3,
num.Substring(0, 3)) + " mil " + Trio(3, num.Substring(4, 3)) + " milllones " + Trio(3,
num.Substring(7, 3)) + " mil " + Trio(3, num.Substring(10, 3));
else if (Tama_Cadena < 16)
Resultado = Trio(3,
num.Substring(0, 3)) + " billones " + Trio(3, num.Substring(4, 3)) + " mil " +
Trio(3, num.Substring(7, 3)) + " milllones
" + Trio(3, num.Substring(10, 3)) + " mil " +
Trio(3, num.Substring(13, 3));
else if (Tama_Cadena < 19)
Resultado = Trio(3,
num.Substring(0, 3)) + " mil " + Trio(3, num.Substring(4, 3)) + " billones " +
Trio(3, num.Substring(7, 3)) + " mil " + Trio(3, num.Substring(10, 3)) + " milllones " +
Trio(3, num.Substring(13, 3)) + " mil " + Trio(3, num.Substring(13, 3));
else if (Tama_Cadena < 21)
Resultado = "";
else if (Tama_Cadena < 24)
Resultado = "";
return Resultado;
}
string Unidades(string numx)
{
return NumeroBase[Convert.ToInt32(numx)];
}
string Decenas(string numx)
{
string Pre = "";
int Num=Convert.ToInt32(numx);
if (Num < 20)
{
Pre = NumeroBase[Num];
}
else
{
if (numx.Substring(0, 1) == "2")
Pre = NumeroBase2[2] +
Unidades(numx.Substring(1, 1));
else
{
if (numx.Substring(1, 1) == "0")
Pre = NumeroBase2[Convert.ToInt32(numx.Substring(0,
1))];
else
Pre = NumeroBase2[Convert.ToInt32(numx.Substring(0,
1))] + "
y " +
Unidades(numx.Substring(1, 1));
}
}
return Pre;
}
string Centenas(string numx)
{
string Pre = "";
if (numx.Substring(0, 1) == "1")
{
if (numx.Substring(1, 1) == "0" &&
numx.Substring(2, 1) == "0")
Pre = "cien ";
else
Pre = "ciento " +
Decenas(numx.Substring(1, 2));
}
else if (numx.Substring(0, 1) == "0")
{
Pre = "" + Decenas(numx.Substring(1,
2));
}
else if (numx.Substring(0, 1) == "5")
{
Pre = "quinientos " + Decenas(numx.Substring(1,
2));
}
else if (numx.Substring(0, 1) == "7")
{
Pre = "setecientos " +
Decenas(numx.Substring(1, 2));
}
else if (numx.Substring(0, 1) == "9")
{
Pre = "novecientos " + Decenas(numx.Substring(1,
2));
}
else
{
Pre = NumeroBase[Convert.ToInt32(numx.Substring(0,
1))] + "cientos
" +
Decenas(numx.Substring(1, 2));
}
return Pre;
}
string Trio(int cant, string Val)
{
string CadenaFinal = "";
switch (cant)
{
case 1:CadenaFinal = Unidades(Val);
break;
case 2: CadenaFinal = Decenas(Val);
break;
case 3: CadenaFinal = Centenas(Val);
break;
}
return CadenaFinal;
}
}
}
Para lo que deseen les dejo el proyecto:
IDE. Visual Studio 2012
Lenguaje: C#
Compilacion: DLL
Peso:2.43 MIB
Proyecto prueba: Prueba_Full
Saludos y tenga lindo día.
Visita mis otras paginas:
Esta muy interesante, pero el unico problema es que no toma en cuenta los decimales
ResponderEliminarEso es muy cierto, en esta version asi es unicamente puros enteros!!.
EliminarRevisado!!! e igual se ve muy interesante, saludos!!!
ResponderEliminarVi este video y me funcionó y me permitió descargar el proyecto , se los comparto! https://www.youtube.com/watch?v=GThaZPLJq_k&lc=z130i5vbftb1x55oy04cfh0x4ryphnpopgo
ResponderEliminarExcelente, saludos.
Eliminar