Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Funcion para convertir numeros a letras
Enviado por martashu el día 13 de septiembre de 2004
Hola:
Alguien sabe alguna funcion para convertir un numero por ejemplo 123 a ciento veintitres tambien con decimales ...
Hola vi que tu tienes un store procedure para convertir numeros a letras. porfa me lo puedes enviar a mi correo es; santeosantuli@gmail.com. y crees que sirva para oracle???
si alguien me puede enviar una funcion para convertir de numeral a literal ej. 123 ciento veititres.
que calcule con 5 digitos que lea hasta el 99999 en visual fox pro 6.0
Re: Re: Re: Funcion para convertir numeros a letras
Enviado por vorito13 el día 21 de julio de 2005
Necesito una funcion para convertir numeros incluyendo decimales a letras, te pido me la envies a mi correo por favor mi direccion es la siguiente:vorito13@yahoo.com. Te agradezco si lo puedes hacer lo antes posible
Gracias de antemano
Enviado por Isaías Islas el día 27 de julio de 2005
CREATE PROCEDURE sp_Num2Let @Numero NUMERIC(20,2) AS
BEGIN
SET NOCOUNT ON
DECLARE @lnEntero INT,
@lcRetorno VARCHAR(512),
@lnTerna INT,
@lcMiles VARCHAR(512),
@lcCadena VARCHAR(512),
@lnUnidades INT,
@lnDecenas INT,
@lnCentenas INT,
@lnFraccion INT
SELECT @lnEntero = CAST(@Numero AS INT),
@lnFraccion = (@Numero - @lnEntero) * 100,
@lcRetorno = '',
@lnTerna = 1
WHILE @lnEntero > 0
BEGIN /* WHILE */
-- Recorro terna por terna
SELECT @lcCadena = ''
SELECT @lnUnidades = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnDecenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnCentenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
-- Analizo las unidades
SELECT @lcCadena =
CASE /* UNIDADES */
WHEN @lnUnidades = 1 AND @lnTerna = 1 THEN 'UNO ' + @lcCadena
WHEN @lnUnidades = 1 AND @lnTerna <> 1 THEN 'UN ' + @lcCadena
WHEN @lnUnidades = 2 THEN 'DOS ' + @lcCadena
WHEN @lnUnidades = 3 THEN 'TRES ' + @lcCadena
WHEN @lnUnidades = 4 THEN 'CUATRO ' + @lcCadena
WHEN @lnUnidades = 5 THEN 'CINCO ' + @lcCadena
WHEN @lnUnidades = 6 THEN 'SEIS ' + @lcCadena
WHEN @lnUnidades = 7 THEN 'SIETE ' + @lcCadena
WHEN @lnUnidades = 8 THEN 'OCHO ' + @lcCadena
WHEN @lnUnidades = 9 THEN 'NUEVE ' + @lcCadena
ELSE @lcCadena
END /* UNIDADES */
-- Analizo las decenas
SELECT @lcCadena =
CASE /* DECENAS */
WHEN @lnDecenas = 1 THEN
CASE @lnUnidades
WHEN 0 THEN 'DIEZ '
WHEN 1 THEN 'ONCE '
WHEN 2 THEN 'DOCE '
WHEN 3 THEN 'TRECE '
WHEN 4 THEN 'CATORCE '
WHEN 5 THEN 'QUINCE '
ELSE 'DIECI' + @lcCadena
END
WHEN @lnDecenas = 2 AND @lnUnidades = 0 THEN 'VEINTE ' + @lcCadena
WHEN @lnDecenas = 2 AND @lnUnidades <> 0 THEN 'VEINTI' + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades = 0 THEN 'TREINTA ' + @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades <> 0 THEN 'TREINTA Y ' + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades = 0 THEN 'CUARENTA ' + @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades <> 0 THEN 'CUARENTA Y ' + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades = 0 THEN 'CINCUENTA ' + @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades <> 0 THEN 'CINCUENTA Y ' + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades = 0 THEN 'SESENTA ' + @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades <> 0 THEN 'SESENTA Y ' + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades = 0 THEN 'SETENTA ' + @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades <> 0 THEN 'SETENTA Y ' + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades = 0 THEN 'OCHENTA ' + @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades <> 0 THEN 'OCHENTA Y ' + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades = 0 THEN 'NOVENTA ' + @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades <> 0 THEN 'NOVENTA Y ' + @lcCadena
ELSE @lcCadena
END /* DECENAS */
-- Analizo las centenas
SELECT @lcCadena =
CASE /* CENTENAS */
WHEN @lnCentenas = 1 AND @lnUnidades = 0 AND @lnDecenas = 0 THEN 'CIEN ' + @lcCadena
WHEN @lnCentenas = 1 AND NOT(@lnUnidades = 0 AND @lnDecenas = 0) THEN 'CIENTO ' + @lcCadena
WHEN @lnCentenas = 2 THEN 'DOSCIENTOS ' + @lcCadena
WHEN @lnCentenas = 3 THEN 'TRESCIENTOS ' + @lcCadena
WHEN @lnCentenas = 4 THEN 'CUATROCIENTOS ' + @lcCadena
WHEN @lnCentenas = 5 THEN 'QUINIENTOS ' + @lcCadena
WHEN @lnCentenas = 6 THEN 'SEISCIENTOS ' + @lcCadena
WHEN @lnCentenas = 7 THEN 'SETECIENTOS ' + @lcCadena
WHEN @lnCentenas = 8 THEN 'OCHOCIENTOS ' + @lcCadena
WHEN @lnCentenas = 9 THEN 'NOVECIENTOS ' + @lcCadena
ELSE @lcCadena
END /* CENTENAS */
-- Analizo la terna
SELECT @lcCadena =
CASE /* TERNA */
WHEN @lnTerna = 1 THEN @lcCadena
WHEN @lnTerna = 2 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL '
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @lcCadena + ' MILLON '
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena + ' MILLONES '
WHEN @lnTerna = 4 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' MIL MILLONES '
ELSE ''
END /* TERNA */
-- Armo el retorno terna a terna
SELECT @lcRetorno = @lcCadena + @lcRetorno
SELECT @lnTerna = @lnTerna + 1
END /* WHILE */
IF @lnTerna = 1
SELECT @lcRetorno = 'CERO'
SELECT RTRIM(@lcRetorno) + ' CON ' + LTRIM(STR(@lnFraccion,2)) + '/100'
END
Re: Re: Re: Funcion para convertir numeros a letras
Enviado por elias el día 31 de agosto de 2005
hola bueno quisera saber si tienen esa funcion pero en codigo java, se los agradecier mucho, por favor envienlo a mi mail eliasiparraguirre@hotmail.com muchas gracias de ante mano
Re: Re: Re: Re: Funcion para convertir numeros a letras
Enviado por elias el día 31 de agosto de 2005
Bueno aqui les dejo el codigo en java para convertir de numeros a letras, la verdad me costo un poco hacer este codigo, ya que recien estoy empezando a programar en este lenguaje, espero le desea de utilidad a alguno de uds Atte ELIAS AUGUSTO PEREZ IPARRAGUIRRE
if (billon !='0')
{
switch(billon)
{
case '1':
numTexto = numTexto + (" Un billón");
break;
case '2':
numTexto = numTexto + (" Dos billones");
break;
case '3':
numTexto = numTexto + (" Tres billones");
case '4':
numTexto = numTexto + (" Cuatro Billones");
break;
case '5':
numTexto = numTexto + (" Cinco billones");
break;
case '6':
numTexto = numTexto + (" Seis billones");
break;
case '7':
numTexto = numTexto + (" Siete billones");
break;
case '8':
numTexto = numTexto + (" Ocho billones");
break;
case '9':
numTexto = numTexto + (" Nueve billones");
break;
};
}
if (centeMillarMillon != '0')
{
switch (centeMillarMillon)
{
case '1':
numTexto = numTexto + (" Cien");
if(deceMillarMillon > '0') numTexto = numTexto +"to";
else numTexto = numTexto +(" mil millones");
break;
case '2':
numTexto = numTexto + (" Doscientos");
if (deceMillarMillon > '0') numTexto = numTexto +("");
else numTexto = numTexto + (" mil millones");
break;
case '3':
numTexto = numTexto + (" Trescientos");
if (deceMillarMillon > '0') numTexto = numTexto +("");
else numTexto = numTexto + (" mil millones");
break;
case '4':
numTexto = numTexto + (" Cuatrocientos");
if (deceMillarMillon > '0') numTexto = numTexto +("");
else numTexto = numTexto + (" mil millones");
break;
case '5':
numTexto = numTexto + (" Quinientos");
if (deceMillarMillon > '0') numTexto = numTexto +("");
else numTexto = numTexto + (" mil millones");
break;
case '6':
numTexto = numTexto + (" Seiscientos");
if (deceMillarMillon > '0') numTexto = numTexto +("");
else numTexto = numTexto + (" mil millones");
break;
case '7':
numTexto = numTexto + (" Setecientos");
if (deceMillarMillon > '0') numTexto = numTexto +("");
else numTexto = numTexto + (" mil millones");
break;
case '8':
numTexto = numTexto + (" Ochocientos");
if (deceMillarMillon > '0') numTexto = numTexto +("");
else numTexto = numTexto + (" mil millones");
break;
case '9':
numTexto = numTexto + (" Novecientos");
if (deceMillarMillon > '0') numTexto = numTexto +("");
else numTexto = numTexto + (" mil millones");
break;
};
}
if(deceMillarMillon != '0')
{
switch(deceMillarMillon)
{
case '1':
if (millarMillon == '0') numTexto = numTexto + (" diez mil millones");
if (millarMillon == '1')
{
numTexto = numTexto + (" once mil millones");
millarMillon = '0';
}
if (millarMillon == '2')
{
numTexto = numTexto + (" doce mil millones");
millarMillon = '0';
}
if (millarMillon == '3')
{
numTexto = numTexto + (" trece mil millones");
millarMillon = '0';
}
if (millarMillon == '4')
{
numTexto = numTexto + (" catorce mil millones");
millarMillon = '0';
}
if (millarMillon == '5')
{
numTexto = numTexto + (" quince mil millones");
millarMillon = '0';
}
if (millarMillon != '0' && millarMillon != '1' && millarMillon != '2' && millarMillon != '3' && millarMillon != '4' && millarMillon != '5') numTexto = numTexto + (" dieci");
break;
case '2':
numTexto = numTexto + (" Veint");
if (millarMillon != '0') numTexto = numTexto + ("i");
else numTexto = numTexto + ("e mil millones");
break;
case '3':
numTexto = numTexto + (" Treint");
if (millarMillon != '0') numTexto = numTexto + ("a y ");
else numTexto = numTexto + ("a mil millones");
break;
case '4':
numTexto = numTexto + (" Cuarent");
if (millarMillon != '0') numTexto = numTexto + ("a y ");
else numTexto = numTexto + ("a mil millones");
break;
case '5':
numTexto = numTexto + (" Cincuent");
if (millarMillon != '0') numTexto = numTexto + ("a y ");
else numTexto = numTexto + ("a mil millones");
break;
case '6':
numTexto = numTexto + (" Sesent");
if (millarMillon != '0')numTexto = numTexto + ("a y ");
else numTexto = numTexto + ("a mil millones");
break;
case '7':
numTexto = numTexto + (" Setent");
if (millarMillon != '0') numTexto = numTexto + ("a y ");
else numTexto = numTexto + ("a mil millones");
break;
case '8':
numTexto = numTexto + (" Ochent");
if (millarMillon != '0') numTexto = numTexto + ("a y ");
else numTexto = numTexto + ("a mil millones");
break;
case '9':
numTexto = numTexto + (" novent");
if (millarMillon != '0') numTexto = numTexto + ("a y ");
else numTexto = numTexto + ("a mil millones");
break;
};
}
if(millarMillon != '0')
{
switch(millarMillon)
{
case '1':
numTexto = numTexto + ("un mil millones");
break;
case '2':
numTexto = numTexto + (" dos mil millones");
break;
case '3':
numTexto = numTexto + (" tres mil millones");
break;
case '4':
numTexto = numTexto + (" cuatro mil millones");
break;
case '5':
numTexto = numTexto + (" cinco mil millones");
break;
case '6':
numTexto = numTexto + (" seis mil millones");
break;
case '7':
numTexto = numTexto + (" siete mil millones");
break;
case '8':
numTexto = numTexto + (" ocho mil millones");
break;
case '9':
numTexto = numTexto + (" nueve mil millones");
break;
};
}
Re: Re: Re: Re: Re: Re: Funcion para convertir numeros a letras
Enviado por SouEu el día 8 de noviembre de 2007
eso chikipow!.. U, U, UCV... estamos en la misma.. si consigues algo plz.. rohirrim_ohtar@hotmail.com
estoy buscando como hacer eso mismo(convertir numeros a letras.. pero el numero inicial me lo dan como String y no lo puedo cambiar a entero nunca..
necesito ayuda, porq no puedo usar el SWITCH ya q es STRING.. )