Posted By

f0vela on 03/13/08


Tagged

numbers text ASP convert


Versions (?)

Numbers to Text (spanish)


 / Published in: ASP
 

  1. '*********************************************************************
  2. '
  3. ' This function allows you to convert a number to text
  4. ' It's in spanish but it's easy to convert to any other language.
  5. '
  6. '*********************************************************************
  7.  
  8. Dim xcen(9) 'centenas
  9. Dim xdec(9) 'decenas
  10. Dim xuni(9) 'unidades
  11. Dim xexc(6) 'except
  12. Dim ceros(9)
  13.  
  14. Function NumToText(pnumero)
  15.  
  16. Dim letras
  17. Dim i
  18. Dim c
  19. Dim j
  20. Dim xnumero
  21. Dim xnum
  22. Dim num
  23. Dim digito
  24. Dim numero_ent
  25. Dim entero
  26. Dim decimales
  27. Dim temp
  28.  
  29. xcen(2) = "dosc"
  30. xcen(3) = "tresc"
  31. xcen(4) = "cuatroc"
  32. xcen(5) = "quin"
  33. xcen(6) = "seisc"
  34. xcen(7) = "setec"
  35. xcen(8) = "ochoc"
  36. xcen(9) = "novec"
  37. xdec(2) = "veinti"
  38. xdec(3) = "trei"
  39. xdec(4) = "cuare"
  40. xdec(5) = "cincue"
  41. xdec(6) = "sese"
  42. xdec(7) = "sete"
  43. xdec(8) = "oche"
  44. xdec(9) = "nove"
  45. xuni(1) = "uno"
  46. xuni(2) = "dos"
  47. xuni(3) = "tres"
  48. xuni(4) = "cuatro"
  49. xuni(5) = "cinco"
  50. xuni(6) = "seis"
  51. xuni(7) = "siete"
  52. xuni(8) = "ocho"
  53. xuni(9) = "nueve"
  54. xexc(1) = "diez"
  55. xexc(2) = "once"
  56. xexc(3) = "doce"
  57. xexc(4) = "trece"
  58. xexc(5) = "catorce"
  59. xexc(6) = "quince"
  60. ceros(1) = "0"
  61. ceros(2) = "00"
  62. ceros(3) = "000"
  63. ceros(4) = "0000"
  64. ceros(5) = "00000"
  65. ceros(6) = "000000"
  66. ceros(7) = "0000000"
  67. ceros(8) = "00000000"
  68.  
  69. c = 1
  70. i = 1
  71. j = 0
  72.  
  73. xnumero = cStr(pnumero)
  74. If Cdbl(LTrim(RTrim(pnumero))) < 999999999.99 Then
  75. numero_ent = Cdbl(Int(pnumero))
  76. If Len(numero_ent) < 9 Then
  77. numero_ent = ceros(9 - Len(numero_ent)) & numero_ent
  78. End If
  79. entero = Cdbl(Int(numero_ent))
  80. decimales = (Cdbl(xnumero) - entero) * 100
  81.  
  82. Do While i < 8
  83. temp = 0
  84. num = Cdbl(Mid(numero_ent, i, 3))
  85. xnum = Mid(numero_ent, i, 3)
  86. digito = Cdbl(Mid(xnum, 1, 1))
  87.  
  88. '/* analizo el numero entero de a 3 */
  89. If xnum = "000" Then
  90. j = 0
  91. Else
  92. j = 1
  93. If digito > 1 Then
  94. letras = letras & xcen(digito) & "ientos "
  95. End If
  96. If Mid(xnum, 1, 1) = "1" And Mid(xnum, 2, 2) <> "00" Then
  97. letras = letras & "ciento "
  98. ElseIf Mid(xnum, 1, 1) = "1" Then
  99. letras = letras & "cien "
  100. End If
  101.  
  102. '/* analisis de las decenas */
  103. digito = Cdbl(Mid(xnum, 2, 1))
  104. If digito > 2 And Mid(xnum, 3, 1) = "0" Then
  105. letras = letras & xdec(digito) & "nta "
  106. temp = 1
  107. End If
  108.  
  109. If digito > 2 And Mid(xnum, 3, 1) <> "0" Then
  110. letras = letras & xdec(digito) & "nta y "
  111.  
  112. End If
  113.  
  114. If digito = 2 And Mid(xnum, 3, 1) = "0" Then
  115. letras = letras & "veinte "
  116. temp = 1
  117. ElseIf digito = 2 And Mid(xnum, 3, 1) <> "0" Then
  118. letras = letras & "veinti"
  119.  
  120. End If
  121.  
  122. If digito = 1 And Mid(xnum, 3, 1) >= "6" Then
  123. letras = letras & "dieci"
  124. ElseIf digito = 1 And Mid(xnum, 3, 1) < "6" Then
  125. letras = letras & xexc(Cdbl(Mid(xnum, 3, 1) + 1))
  126. temp = 1
  127. End If
  128. End If
  129.  
  130. if temp = 0 then
  131. '/* analisis del ultimo digito */
  132. digito = Cdbl(Mid(xnum, 3, 1))
  133. If ((c = 1) Or (c = 2)) And xnum = "001" Then
  134. letras = letras & "un"
  135. Else
  136. If ((c = 1) Or (c = 2)) And xnum >= "020" And Mid(xnum, 3, 1) = "1" Then
  137. letras = letras & "un"
  138. Else
  139. If digito <> 0 Then
  140. letras = letras & xuni(digito)
  141. End If
  142. End If
  143. End If
  144. end if
  145.  
  146. If j = 1 And i = 1 And xnum = "001" And c = 1 Then
  147. letras = letras & " millon "
  148. ElseIf j = 1 And i = 1 And xnum <> "001" And c = 1 Then
  149. letras = letras & " millones "
  150. ElseIf j = 1 And i = 4 And c = 2 Then
  151. letras = letras & " mil "
  152. End If
  153. i = i + 3
  154. c = c + 1
  155. Loop
  156. If letras = "" Then
  157. letras = "cero "
  158. End If
  159. If decimales <> 0 Then
  160. decimales = Round(decimales)
  161.  
  162. letras = letras & " con " & CStr(decimales) & "/100"
  163. End If
  164.  
  165. End If
  166.  
  167. NumToText = letras
  168. End Function

Report this snippet  

You need to login to post a comment.