Convertir un numero a letras
Visual Basic.NET
Publicado el 11 de Enero del 2017 por Xavi (548 códigos)
33.506 visualizaciones desde el 11 de Enero del 2017
Este código muestra como convertir un numero sin decimales a letras


Module Module1
Sub Main()
Dim valor As Double = 9861257263
Console.WriteLine(valor)
Console.WriteLine(Num2Text(valor))
Console.ReadKey()
End Sub
Public Function Num2Text(ByVal value As Double) As String
Select Case value
Case 0 : Num2Text = "CERO"
Case 1 : Num2Text = "UN"
Case 2 : Num2Text = "DOS"
Case 3 : Num2Text = "TRES"
Case 4 : Num2Text = "CUATRO"
Case 5 : Num2Text = "CINCO"
Case 6 : Num2Text = "SEIS"
Case 7 : Num2Text = "SIETE"
Case 8 : Num2Text = "OCHO"
Case 9 : Num2Text = "NUEVE"
Case 10 : Num2Text = "DIEZ"
Case 11 : Num2Text = "ONCE"
Case 12 : Num2Text = "DOCE"
Case 13 : Num2Text = "TRECE"
Case 14 : Num2Text = "CATORCE"
Case 15 : Num2Text = "QUINCE"
Case Is < 20 : Num2Text = "DIECI" & Num2Text(value - 10)
Case 20 : Num2Text = "VEINTE"
Case Is < 30 : Num2Text = "VEINTI" & Num2Text(value - 20)
Case 30 : Num2Text = "TREINTA"
Case 40 : Num2Text = "CUARENTA"
Case 50 : Num2Text = "CINCUENTA"
Case 60 : Num2Text = "SESENTA"
Case 70 : Num2Text = "SETENTA"
Case 80 : Num2Text = "OCHENTA"
Case 90 : Num2Text = "NOVENTA"
Case Is < 100 : Num2Text = Num2Text(Int(value \ 10) * 10) & " Y " & Num2Text(value Mod 10)
Case 100 : Num2Text = "CIEN"
Case Is < 200 : Num2Text = "CIENTO " & Num2Text(value - 100)
Case 200, 300, 400, 600, 800 : Num2Text = Num2Text(Int(value \ 100)) & "CIENTOS"
Case 500 : Num2Text = "QUINIENTOS"
Case 700 : Num2Text = "SETECIENTOS"
Case 900 : Num2Text = "NOVECIENTOS"
Case Is < 1000 : Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)
Case 1000 : Num2Text = "MIL"
Case Is < 2000 : Num2Text = "MIL " & Num2Text(value Mod 1000)
Case Is < 1000000 : Num2Text = Num2Text(Int(value \ 1000)) & " MIL"
If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)
Case 1000000 : Num2Text = "UN MILLON"
Case Is < 2000000 : Num2Text = "UN MILLON " & Num2Text(value Mod 1000000)
Case Is < 1000000000000.0# : Num2Text = Num2Text(Int(value / 1000000)) & " MILLONES"
If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)
Case 1000000000000.0# : Num2Text = "UN BILLON"
Case Is < 2000000000000.0# : Num2Text = "UN BILLON " & Num2Text(value - Int(value / 1000000000000.0#) * 1000000000000.0#)
Case Else : Num2Text = Num2Text(Int(value / 1000000000000.0#)) & " BILLONES"
If (value - Int(value / 1000000000000.0#) * 1000000000000.0#) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000000000.0#) * 1000000000000.0#)
End Select
Return Num2Text
End Function
End Module
Comentarios sobre la versión: Versión 1 (9)
link: https://www.youtube.com/watch?v=GThaZPLJq_k&t=17s este link es en C#, si lo desean en Vb.net el link sería el siguiente: https://www.youtube.com/watch?v=HUXNFe0LkG8
Dim XlnEntero As Integer
Dim XlcRetorno As String
Dim XlnTerna As Integer
Dim XlcCadena As String
Dim XlnUnidades As Integer
Dim XlnDecenas As Integer
Dim XlnCentenas As Integer
Dim XlnFraccion As Integer
Dim Xresultado As String
XlnEntero = Math.Truncate(XNumero)
XlnFraccion = (XNumero - XlnEntero) * 100
XlcRetorno = ""
XlnTerna = 1
While (XlnEntero > 0)
'Recorro terna por terna
XlcCadena = ""
XlnUnidades = XlnEntero Mod 10
XlnEntero = Math.Floor(XlnEntero / 10)
XlnDecenas = XlnEntero Mod 10
XlnEntero = Math.Floor(XlnEntero / 10)
XlnCentenas = XlnEntero Mod 10
XlnEntero = Math.Floor(XlnEntero / 10)
'Analizo las unidades
Select Case True ' UNIDADES
Case XlnUnidades = 1 And XlnTerna = 1
XlcCadena = "UN " & XlcCadena
Case XlnUnidades = 1 And XlnTerna <> 1
XlcCadena = XlcCadena
Case XlnUnidades = 2
XlcCadena = "DOS " & XlcCadena
Case XlnUnidades = 3
XlcCadena = "TRES " & XlcCadena
Case XlnUnidades = 4
XlcCadena = "CUATRO " & XlcCadena
Case XlnUnidades = 5
XlcCadena = "CINCO " & XlcCadena
Case XlnUnidades = 6
XlcCadena = "SEIS " & XlcCadena
Case XlnUnidades = 7
XlcCadena = "SIETE " & XlcCadena
Case XlnUnidades = 8
XlcCadena = "OCHO " & XlcCadena
Case XlnUnidades = 9
XlcCadena = "NUEVE " & XlcCadena
Case Else
XlcCadena = XlcCadena
End Select 'UNIDADES
'Analizo las decenas
Select Case True 'DECENAS
Case XlnDecenas = 1
Select Case XlnUnidades
Case 0
XlcCadena = "DIEZ "
Case 1
XlcCadena = "ONCE "
Case 2
XlcCadena = "DOCE "
Case 3
XlcCadena = "TRECE "
Case 4
XlcCadena = "CATORCE "
Case 5
XlcCadena = "QUINCE"
Case Else
XlcCadena = "DIECI" & XlcCadena
End Select
Case XlnDecenas = 2 And XlnUnidades = 0
XlcCadena = "VEINTE " & XlcCadena
Case XlnDecenas = 2 And XlnUnidades <> 0
XlcCadena = "VEINTI" & XlcCadena
Case XlnDecenas = 3 And XlnUnidades = 0
XlcCadena = "TREINTA " & XlcCadena
Case XlnDecenas = 3 And XlnUnidades <> 0
XlcCadena = "TREINTA Y " & XlcCadena
Case XlnDecenas = 4 And XlnUnidades = 0
XlcCadena = "CUARENTA " & XlcCadena
Case XlnDecenas = 4 And XlnUnidades <> 0
XlcCadena = "CUARENTA Y " & XlcCadena
Case XlnDecenas = 5 And XlnUnidades = 0
XlcCadena = "CINCUENTA " & XlcCadena
Case XlnDecenas = 5 And XlnUnidades <> 0
XlcCadena = "CINCUENTA Y " & XlcCadena
Case XlnDecenas = 6 And XlnUnidades = 0
XlcCadena = "SESENTA " & XlcCadena
Case XlnDecenas = 6 And XlnUnidades <> 0
XlcCadena = "SESENTA Y " & XlcCadena
Case XlnDecenas = 7 And XlnUnidades = 0
XlcCadena = "SETENTA " & XlcCadena
Case XlnDecenas = 7 And XlnUnidades <> 0
XlcCadena = "SETENTA Y " & XlcCadena
Case XlnDecenas = 8 And XlnUnidades = 0
XlcCadena = "OCHENTA " & XlcCadena
Case XlnDecenas = 8 And XlnUnidades <> 0
XlcCadena = "OCHENTA Y " & XlcCadena
Case XlnDecenas = 9 And XlnUnidades = 0
XlcCadena = "NOVENTA " & XlcCadena
Case XlnDecenas = 9 And XlnUnidades <> 0
XlcCadena = "NOVENTA Y " & XlcCadena
Case Else
XlcCadena = XlcCadena
End Select 'DECENAS
' Analizo las centenas
Select Case True ' CENTENAS
Case XlnCentenas = 1 And XlnUnidades = 0 And XlnDecenas = 0
XlcCadena = "CIEN " & XlcCadena
Case XlnCentenas = 1 And Not (XlnUnidades = 0 And XlnDecenas = 0)
XlcCadena = "CIENTO " & XlcCadena
Case XlnCentenas = 2
XlcCadena = "DOSCIENTOS " & XlcCadena
Case XlnCentenas = 3
XlcCadena = "TRESCIENTOS " & XlcCadena
Case XlnCentenas = 4
XlcCadena = "CUATROCIENTOS " & XlcCadena
Case XlnCentenas = 5
XlcCadena = "QUINIENTOS " & XlcCadena
Case XlnCentenas = 6
XlcCadena = "SEISCIENTOS " & XlcCadena
Case XlnCentenas = 7
XlcCadena = "SETECIENTOS " & XlcCadena
Case XlnCentenas = 8
XlcCadena = "OCHOCIENTOS " & XlcCadena
Case XlnCentenas = 9
XlcCadena = "NOVECIENTOS " & XlcCadena
Case Else
XlcCadena = XlcCadena
End Select 'CENTENAS
' Analizo la terna
Select Case True ' TERNA
Case XlnTerna = 1
XlcCadena = XlcCadena
Case XlnTerna = 2 And (XlnUnidades + XlnDecenas + XlnCentenas <> 0)
XlcCadena = XlcCadena & "MIL "
Case XlnTerna = 3 And (XlnUnidades + XlnDecenas + XlnCentenas <> 0) And XlnUnidades = 1 And XlnDecenas = 0 And XlnCentenas = 0
XlcCadena = XlcCadena & "MILLON "
Case XlnTerna = 3 And (XlnUnidades + XlnDecenas + XlnCentenas <> 0) And Not (XlnUnidades = 1 And XlnDecenas = 0 And XlnCentenas = 0)
XlcCadena = XlcCadena & "MILLONES "
Case XlnTerna = 4 And (XlnUnidades + XlnDecenas + XlnCentenas <> 0)
XlcCadena = XlcCadena & "MIL MILLONES "
Case XlnTerna = 5 And (XlnUnidades + XlnDecenas + XlnCentenas <> 0)
XlcCadena = XlcCadena & "BILLON "
Case XlnTerna = 6 And (XlnUnidades + XlnDecenas + XlnCentenas <> 0)
XlcCadena = XlcCadena & "BILLONES "
Case Else
XlcCadena = ""
End Select 'TERNA
'Armo el retorno terna a terna
XlcRetorno = XlcCadena & XlcRetorno
XlnTerna = XlnTerna + 1
End While ' While
If XlnTerna = 1 Then XlcRetorno = "CERO"
Xresultado = XlcRetorno.ToString.TrimEnd.ToLower & " " & XMoneda & " con " & XlnFraccion.ToString.TrimStart & "/100 ctvs"
Return Xresultado
End Function