Return to Snippet

Revision: 5525
at March 13, 2008 15:06 by f0vela


Initial Code
'*********************************************************************
'
' This function allows you to convert a number to text
' It's in spanish but it's easy to convert to any other language.
'
'*********************************************************************

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

Function NumToText(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 & " con " & CStr(decimales) & "/100"
    End If
    
  End If

  NumToText = letras
End Function

Initial URL


Initial Description


Initial Title
Numbers to Text (spanish)

Initial Tags
text, ASP, convert

Initial Language
ASP