Código de Visual Basic.NET - Convertir un numero a letras

Requerimientos

Probado en VB. NET 2015

Versión 1
estrellaestrellaestrellaestrellaestrella(9)

Actualizado el 1 de Febrero del 2017 (Publicado el 11 de Enero del 2017)gráfica de visualizaciones de la versión: Versión 1
30.498 visualizaciones desde el 11 de Enero del 2017
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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)

Sebas
1 de Febrero del 2017
estrellaestrellaestrellaestrellaestrella
Buen aporte muy creativo
Responder
Imágen de perfil
1 de Abril del 2017
estrellaestrellaestrellaestrellaestrella
Excelente código amigo. Corto y sencillo. Siempre es de mucha utilidad convertir números en letras especialmente si realizamos sistemas de facturación.
Responder
Laina
15 de Mayo del 2018
estrellaestrellaestrellaestrellaestrella
NO puedo vcnvertir numeros decimales....Ayudaa
Responder
Lizy
3 de Abril del 2019
estrellaestrellaestrellaestrellaestrella
manita arriba
Responder
sebastian
10 de Agosto del 2019
estrellaestrellaestrellaestrellaestrella
me encanto un código muy corto y eficiente......
Responder
Imágen de perfil
13 de Noviembre del 2020
estrellaestrellaestrellaestrellaestrella
En este video aprendí como hacerlo, en la descripcion se puede descargar el proyecto , por si gustan checkearlo.

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
Responder
Daniel Rivas
11 de Febrero del 2021
estrellaestrellaestrellaestrellaestrella
Excelente aporte. Para los decimales, anexo el complemento:

1
2
3
4
Dim entero As Integer = Int(txtPor.Text)
Dim decimales As Double = txtPor.Text - entero
txtPor.Text = Format(CDbl(txtPor.Text), "##,###.##")
lblLetras.Text = "( " + Num2Text(entero) + " DOLARES, CON " + Right(CStr(Format(decimales, "0.00")), 2) + " CENTAVOS. )"
Responder
Dyzzy
14 de Abril del 2022
estrellaestrellaestrellaestrellaestrella
Gracias Hermano!
Responder
Aldo
21 de Abril del 2023
estrellaestrellaestrellaestrellaestrella
Public Function CantidadALetras(ByVal XNumero As Decimal, ByVal XMoneda As String) As String
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
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s3832