lunes, 23 de noviembre de 2009

Cambiar un numero a letras en C#

Si deseas cambiar un número a letras por ejemplo para ponerlo en un cheque aquí lo teneis mediante C#.

Un ejemplo:

String enLetra=NumToText(4320.20) ;
enLetra="Cuatro mil trescientos veinte con veinte";

public
static string NumToText(double value)
{
string enLetras = "";
//Pasar lo que hay en el decimal a entero
double decimales = (Math.Round(value - Math.Truncate(value),2))*100;
value = Math.Truncate(value);
if (value == 0) enLetras = "CERO";
else if (value == 1) enLetras = "UNO";
else if (value == 2) enLetras = "DOS";
else if (value == 3) enLetras = "TRES";
else if (value == 4) enLetras = "CUATRO";
else if (value == 5) enLetras = "CINCO";
else if (value == 6) enLetras = "SEIS";
else if (value == 7) enLetras = "SIETE";
else if (value == 8) enLetras = "OCHO";
else if (value == 9) enLetras = "NUEVE";
else if (value == 10) enLetras = "DIEZ";
else if (value == 11) enLetras = "ONCE";
else if (value == 12) enLetras = "DOCE";
else if (value == 13) enLetras = "TRECE";
else if (value == 14) enLetras = "CATORCE";
else if (value == 15) enLetras = "QUINCE";
else if (value < 20) enLetras = "DIECI" + NumToText(value - 10);
else if (value == 20) enLetras = "VEINTE";
else if (value < 30) enLetras = "VEINTI" + NumToText(value - 20);
else if (value == 30) enLetras = "TREINTA";
else if (value == 40) enLetras = "CUARENTA";
else if (value == 50) enLetras = "CINCUENTA";
else if (value == 60) enLetras = "SESENTA";
else if (value == 70) enLetras = "SETENTA";
else if (value == 80) enLetras = "OCHENTA";
else if (value == 90) enLetras = "NOVENTA";
else if (value < 100) enLetras = NumToText(Math.Truncate(value / 10) * 10) + " Y " + NumToText(value % 10);
else if (value == 100) enLetras = "CIEN";
else if (value < 200) enLetras = "CIENTO " + NumToText(value - 100);
else if ((value == 200) (value == 300) (value == 400) (value == 600) (value == 800)) enLetras = NumToText(Math.Truncate(value / 100)) + "CIENTOS";
else if (value == 500) enLetras = "QUINIENTOS";
else if (value == 700) enLetras = "SETECIENTOS";
else if (value == 900) enLetras = "NOVECIENTOS";
else if (value < 1000) enLetras = NumToText(Math.Truncate(value / 100) * 100) + " " + NumToText(value % 100);
else if (value == 1000) enLetras = "MIL";
else if (value < 2000) enLetras = "MIL " + NumToText(value % 1000);
else if (value < 1000000)
{
enLetras = NumToText(
Math.Truncate(value / 1000)) + " MIL";
if ((value % 1000) > 0) enLetras = enLetras + " " + NumToText(value % 1000);
}
else if (value == 1000000) enLetras = "UN MILLON";
else if (value < 2000000) enLetras = "UN MILLON " + NumToText(value % 1000000);
else if (value < 1000000000000)
{
enLetras = NumToText(
Math.Truncate(value / 1000000)) + " MILLONES ";
if ((value - Math.Truncate(value / 1000000) * 1000000) > 0) enLetras = enLetras + " " + NumToText(value - Math.Truncate(value / 1000000) * 1000000);
}
else if (value == 1000000000000) enLetras = "UN BILLON";
else if (value < 2000000000000) enLetras = "UN BILLON " + NumToText(value - Math.Truncate(value / 1000000000000) * 1000000000000);
else
{
enLetras = NumToText(
Math.Truncate(value / 1000000000000)) + " BILLONES";
if ((value - Math.Truncate(value / 1000000000000) * 1000000000000) > 0) enLetras = enLetras + " " + NumToText(value - Math.Truncate(value / 1000000000000) * 1000000000000);
}
//Si tiene decimales calcular las letras
if (decimales > 0)
enLetras = enLetras + " CON " + NumToText(decimales);
return enLetras;
}

No hay comentarios:

Publicar un comentario