Foros del Web » Programando para Internet » ASP Clásico »

Numero a letras

Estas en el tema de Numero a letras en el foro de ASP Clásico en Foros del Web. Hola encontre una funcion que me convierte un numero en texto, mi problema es cuando ingreso numeros sin decimales por ejemplo 1972.00 lo escribe UN ...
  #1 (permalink)  
Antiguo 11/07/2012, 12:25
 
Fecha de Ingreso: diciembre-2011
Mensajes: 8
Antigüedad: 12 años, 11 meses
Puntos: 0
Numero a letras

Hola encontre una funcion que me convierte un numero en texto, mi problema es cuando ingreso numeros sin decimales por ejemplo 1972.00 lo escribe UN MIL NOVECIENTOS SETENTA Y UNO PESOS 100/100 M.N. cuando deberia de escribir UN MIL NOVECIENTOS SETENTA Y DOS PESOS 00/100 M.N.
el codigo es:

<%
' 'FUNCION PARA GENERAR LA CANTIDAD A LETRA

'FUCNION PARA ESCRIBIR LOS NUMEROS EN LETRAS

Dim xcen(9) 'centenas
Dim xdec(9) 'decenas
Dim xuni(9) 'unidades
Dim xexc(6) 'except
Dim ceros(9)

Function CONVERTIR(pnumero)

Dim letras
Dim i
Dim c
Dim j
Dim xnumero
Dim xnum
Dim num
Dim digito
Dim numero_ent
Dim entero
Dim decimales
Dim temp

xcen(2) = "DOSC"
xcen(3) = "TRESC"
xcen(4) = "CUATROC"
xcen(5) = "QUIN"
xcen(6) = "SEISC"
xcen(7) = "SETEC"
xcen(8) = "OCHOC"
xcen(9) = "NOVEC"
xdec(2) = "VEINTI"
xdec(3) = "TREI"
xdec(4) = "CUARE"
xdec(5) = "CINCUE"
xdec(6) = "SESE"
xdec(7) = "SETE"
xdec(8) = "OCHE"
xdec(9) = "NOVE"
xuni(1) = "UNO"
xuni(2) = "DOS"
xuni(3) = "TRES"
xuni(4) = "CUATRO"
xuni(5) = "CINCO"
xuni(6) = "SEIS"
xuni(7) = "SIETE"
xuni(8) = "OCHO"
xuni(9) = "NUEVE"
xexc(1) = "DIEZ"
xexc(2) = "ONCE"
xexc(3) = "DOCE"
xexc(4) = "TRECE"
xexc(5) = "CATORCE"
xexc(6) = "QUINCE"
ceros(1) = "0"
ceros(2) = "00"
ceros(3) = "000"
ceros(4) = "0000"
ceros(5) = "00000"
ceros(6) = "000000"
ceros(7) = "0000000"
ceros(8) = "00000000"

c = 1
i = 1
j = 0

xnumero = cStr(pnumero)
If Cdbl(LTrim(RTrim(pnumero))) < 999999999.99 Then
numero_ent = Cdbl(Int(pnumero))
If Len(numero_ent) < 9 Then
numero_ent = ceros(9 - Len(numero_ent)) & numero_ent
End If
entero = Cdbl(Int(numero_ent))
decimales = (Cdbl(xnumero) - entero) * 100

Do While i < 8
temp = 0
num = Cdbl(Mid(numero_ent, i, 3))
xnum = Mid(numero_ent, i, 3)
digito = Cdbl(Mid(xnum, 1, 1))

'/* analizo el numero entero de a 3 */
If xnum = "000" Then
j = 0
Else
j = 1
If digito > 1 Then
letras = letras & xcen(digito) & "IENTOS "
End If
If Mid(xnum, 1, 1) = "1" And Mid(xnum, 2, 2) <> "00" Then
letras = letras & "CIENTO "
ElseIf Mid(xnum, 1, 1) = "1" Then
letras = letras & "CIEN "
End If

'/* analisis de las decenas */
digito = Cdbl(Mid(xnum, 2, 1))
If digito > 2 And Mid(xnum, 3, 1) = "0" Then
letras = letras & xdec(digito) & "NTA "
temp = 1
End If

If digito > 2 And Mid(xnum, 3, 1) <> "0" Then
letras = letras & xdec(digito) & "NTA Y "

End If

If digito = 2 And Mid(xnum, 3, 1) = "0" Then
letras = letras & "VEINTE "
temp = 1
ElseIf digito = 2 And Mid(xnum, 3, 1) <> "0" Then
letras = letras & "VEINTI"

End If

If digito = 1 And Mid(xnum, 3, 1) >= "6" Then
letras = letras & "DIECI"
ElseIf digito = 1 And Mid(xnum, 3, 1) < "6" Then
letras = letras & xexc(Cdbl(Mid(xnum, 3, 1) + 1))
temp = 1
End If
End If

if temp = 0 then
'/* analisis del ultimo digito */
digito = Cdbl(Mid(xnum, 3, 1))
If ((c = 1) Or (c = 2)) And xnum = "001" Then
letras = letras & "UN"
Else
If ((c = 1) Or (c = 2)) And xnum >= "020" And Mid(xnum, 3, 1) = "1" Then
letras = letras & "UN"
Else
If digito <> 0 Then
letras = letras & xuni(digito)
End If
End If
End If
end if

If j = 1 And i = 1 And xnum = "001" And c = 1 Then
letras = letras & " MILLON "
ElseIf j = 1 And i = 1 And xnum <> "001" And c = 1 Then
letras = letras & " MILLONES "
ElseIf j = 1 And i = 4 And c = 2 Then
letras = letras & " MIL "
End If
i = i + 3
c = c + 1
Loop
If letras = "" Then
letras = "CERO "
End If
If decimales <> 0 Then
decimales = Round(decimales)

letras = letras & " PESOS " & CStr(decimales) & "/100 M.N."
else
letras = letras & " PESOS 00/100 M.N."
End If

End If

'EN ESTA VARIABLE SESSION SE GUARDA EL NUMERO EN LETRAS
Session("Valor") = letras
End Function

'aqui se manda a llamar a la funcion con la variable que se quiere convertir
call CONVERTIR(total)
%>

si alguen me puede ayudar se lo agradeceria bastante

Etiquetas: letras, numero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:25.