Como convertir numeros a letras en ASP

Pedro
22 de Noviembre del 2003
Hola, necesito saber como convertir numeros a letras
es decir tener una cantidad que sea por ejemplo:
$1,000.00 y que se transforme a Un Mil Pesos.

ilco26
22 de Noviembre del 2003
pues no se si existe alguna funcion que lo haga, pero si no puedes hacertela.
mete el numero en un array, los millares en la casilla 0, las centenas en la 1, las decenas en la 2, y las unidades en la 3
y ahora te creas un array para los millaras en que la casilla 1 valga MIL, las 2 DOSMIL....
otro array para las centenas, en la casilla 1,1 pon cien, en al 1,2 pin ciento (es por si hay un 100=CIEN o un 101 Ciento uno), ya lo haces lo complicado que quieras...
y pa las centenas igual, teniendo en cuanta que si las centenas es 1 mejor miras en las unidades y esta que vallan del 1 al 15 por eso de once doce... bueno, si no te enteras ve haciendolo y te daras cuenta.
Total que al final cojes del array donde tienes el numero a pasar a letras el millar y sacas lo que tengas en la casilla del array de los millares, luego las centenas...
si, tiene mandanga, pero no se ma ocurrio na peor

JAYUPI
22 de Noviembre del 2003
PEGA ESTE TEXTO EN BLOCK DE NOTAS Y GUARDALO COMO ASP CON EL NOMBRE QUE SEA, ALFINAL DE LA HOJA VIENE montoescrito=EnLetras(255001.22) CAMBIALE LA CANTIDAD POR LA QUE TU QUIERAS, YA SEA UNA VARIABLE O UN VALOR FIJO, SUERTE







<%
Function EnLetras(numero)
Dim b, paso
Dim expresion, entero, deci, flag

flag = "N"
For paso = 1 To Len(numero)
If Mid(numero, paso, 1) = "." Then
flag = "S"
Else
If flag = "N" Then
entero = entero + Mid(numero, paso, 1) 'Extae la parte entera del numero
Else
deci = deci + Mid(numero, paso, 1) 'Extrae la parte decimal del numero
End If
End If
Next

If Len(deci) = 1 Then
deci = deci & "0"
End If

flag = "N"
If int(numero) >= -999999999 And int(numero) <= 999999999 Then 'si el numero esta dentro de 0 a 999.999.999
For paso = Len(entero) To 1 Step -1
b = Len(entero) - (paso - 1)
Select Case paso
Case 3, 6, 9
Select Case Mid(entero, b, 1)
Case "1"
If Mid(entero, b + 1, 1) = "0" And Mid(entero, b + 2, 1) = "0" Then
expresion = expresion & "cien "
Else
expresion = expresion & "ciento "
End If
Case "2"
expresion = expresion & "doscientos "
Case "3"
expresion = expresion & "trescientos "
Case "4"
expresion = expresion & "cuatrocientos "
Case "5"
expresion = expresion & "quinientos "
Case "6"
expresion = expresion & "seiscientos "
Case "7"
expresion = expresion & "setecientos "
Case "8"
expresion = expresion & "ochocientos "
Case "9"
expresion = expresion & "novecientos "
End Select

Case 2, 5, 8
Select Case Mid(entero, b, 1)
Case "1"
If Mid(entero, b + 1, 1) = "0" Then
flag = "S"
expresion = expresion & "diez "
End If
If Mid(entero, b + 1, 1) = "1" Then
flag = "S"
expresion = expresion & "once "
End If
If Mid(entero, b + 1, 1) = "2" Then
flag = "S"
expresion = expresion & "doce "
End If
If Mid(entero, b + 1, 1) = "3" Then
flag = "S"
expresion = expresion & "trece "
End If
If Mid(entero, b + 1, 1) = "4" Then
flag = "S"
expresion = expresion & "catorce "
End If
If Mid(entero, b + 1, 1) = "5" Then
flag = "S"
expresion = expresion & "quince "
End If
If Mid(entero, b + 1, 1) > "5" Then
flag = "N"
expresion = expresion & "dieci"
End If

Case "2"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "veinte "
flag = "S"
Else
expresion = expresion & "veinti"
flag = "N"
End If

Case "3"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "treinta "
flag = "S"
Else
expresion = expresion & "treinta y "
flag = "N"
End If

Case "4"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "cuarenta "
flag = "S"
Else
expresion = expresion & "cuarenta y "
flag = "N"
End If

Case "5"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "cincuenta "
flag = "S"
Else
expresion = expresion & "cincuenta y "
flag = "N"
End If

Case "6"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "sesenta "
flag = "S"
Else
expresion = expresion & "sesenta y "
flag = "N"
End If

Case "7"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "setenta "
flag = "S"
Else
expresion = expresion & "setenta y "
flag = "N"
End If

Case "8"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "ochenta "
flag = "S"
Else
expresion = expresion & "ochenta y "
flag = "N"
End If

Case "9"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "noventa "
flag = "S"
Else
expresion = expresion & "noventa y "
flag = "N"
End If
End Select

Case 1, 4, 7
Select Case Mid(entero, b, 1)
Case "1"
If flag = "N" Then
If paso = 1 Then
expresion = expresion & "uno "
Else
expresion = expresion & "un "
End If
End If
Case "2"
If flag = "N" Then
expresion = expresion & "dos "
End If
Case "3"
If flag = "N" Then
expresion = expresion & "tres "
End If
Case "4"
If flag = "N" Then
expresion = expresion & "cuatro "
End If
Case "5"
If flag = "N" Then
expresion = expresion & "cinco "
End If
Case "6"
If flag = "N" Then
expresion = expresion & "seis "
End If
Case "7"
If flag = "N" Then
expresion = expresion & "siete "
End If
Case "8"
If flag = "N" Then
expresion = expresion & "ocho "

End If
Case "9"
If flag = "N" Then
expresion = expresion & "nueve "
End If
End Select
End Select
If paso = 4 Then
If Mid(entero, 6, 1) <> "0" Or Mid(entero, 5, 1) <> "0" Or Mid(entero, 4, 1) <> "0" Or (Mid(entero, 6, 1) = "0" And Mid(entero, 5, 1) = "0"

And Mid(entero, 4, 1) = "0" And Len(entero) <= 6) Then
expresion = expresion & "mil "
End If
End If
If paso = 7 Then
If Len(entero) = 7 And Mid(entero, 1, 1) = "1" Then
expresion = expresion & "milln "
Else
expresion = expresion & "millones "
End If
End If
Next

If deci <> "" Then
If Mid(entero, 1, 1) = "-" Then 'si el numero es negativo
EnLetras = "menos " & expresion & " PESOS " & deci ' & ""
Else
EnLetras = expresion & " PESOS " & deci ' & ""
End If
Else
If Mid(entero, 1, 1) = "-" Then 'si el numero es negativo
EnLetras = "menos " & expresion & " PESOS 2"
Else
EnLetras = expresion & " PESOS 00"
End If
End If
Else 'si el numero a convertir esta fuera del rango superior e inferior
EnLetras = ""
End If
End Function

%>









<%
montoescrito=EnLetras(255001.22)
response.write(montoescrito & "/100 MN")
%>