Visual Basic.NET
78.032 lecturas

Como convertir números a letras

He visto muchas veces esta pregunta en los foros, si mal no recuerdo en el año 2000 alguién que no recuerdo su nombre envío el siguiente algoritmo para VB 6.0 para realizar dicha conversión
Publicado el miércoles, 12 de septiembre de 2007
Enlaces patrocinados

Como convertir números a letras


He visto muchas veces esta pregunta en los foros, si mal no recuerdo en el año 2000 alguién que no recuerdo su nombre envío el siguiente algoritmo para VB 6.0 para realizar dicha conversión.... ha sido unos de los mejores que he visto.. a continuación se los adjunto, espero que también les puedan servir.

 

Sirve tanto para VB 6.0, como para Visual Basic .NET

 

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


Comparte el artículo en las redes sociales

57 comentarios del truco (página 1)
kelcom dice
este algoritmo esta desarrollado en llava solo creen una clase y peguen el codigo. public static String readNumber( String Number, String sepDecimal, String sMoney ){ String V[] = initVector(), s = "", z = "", c = "", e = " ", t; int l = Number.length(), k = Number.indexOf( sepDecimal ), u = 1, n = 0, j = 0, b = 0, d, p, r; try{ if( k >= 0 ) { c = Number.substring( k + 1, l ); l = k; } if ( l <= 15 ) { for( int i = l ; i >= 1; i-- ){ d = Integer.parseInt( String.valueOf( Number.charAt( i - 1 ) )); n = ( d * u ) + n; switch( u ){ case Unid.Unidad: s = V[ n ]; if ( i == l && n == 1 ) b++; break; case Unid.Decena: p = d - 2; if( p < 0 ) s = V[ n ]; else{ t = V[ 20 + p ]; if( n % 10 != 0 ) s = (d == 2)? "veinti" + s : t + " y " + s; else s = t; } break; case Unid.Centena: p = d - 1; t = V[ 30 + p ]; if( n % 100 == 0 ) { s = ""; e = ""; } else if( d == 1 ) t += "to"; s = t + e + s; z = ( s + z ); break; } e = " "; //ini. calcula los miles, millones, billones r = l - i; if( r > 0 && r % 3 == 0 ){ p = ( r > 10 )? 2 : j++ & 1; t = V[ 40 + p ]; if( p > 0 ) if( ( n == 1 && i > 1 ) || n > 1 ) t += "es"; z = e + t + e + z; } //fin. if ( u == Unid.Centena ){ u = 1; n = 0; s = ""; } else u *= 10; } } //ini. adiciona la moneda y los centavos if ( !c.equals("") ) c = " con " + c + " centavos"; if ( !sMoney.equals("") ) sMoney = " " + sMoney; else if( b > 0 ) z += "o"; //fin. z = ( s + z ) + sMoney + c; } catch(NumberFormatException ex){ z = "
Publicado el sábado, 23 de febrero de 2013
GERMAN HERNANDEZ dice
hola a todos para ke funcione hagan lo siguiente esta funcion peguenlo en el form.. luego hacer lo siguiente...1.- un txtnumero.text para numero y otro txtletra.text para letra. 2.- un boton y en el boton poner lo siguiente: txtletra.text=Num2Text(txtnumero.text) y listo ya jala
Publicado el miércoles, 11 de julio de 2012
antonio dice
comom lo aplico en vb 2010 num2text a que equivale a un textbox y los text a aque equivalen osea que tengo un label de 10000 y en otro label quiero mostrar las letras como lo igualo que equivale a que
Publicado el jueves, 28 de junio de 2012
Labze__ZuR_Crew dice
gracias si k funciona, camara, crei k no funcionaba, segui algunas cosas k decias (Lalo)y a (juan), chido carnal, si me funciono, cree un comamd1 donde puse Text2 = Num2Text(Val(Text1))... y solo copie todo igual el programa k esta en esta pagina, chido . gracias. desde Mexico, al MC Labze.
Publicado el martes, 12 de junio de 2012
fantasma dice
muy bueno.......una pregunta ahora si yo lo quisiera hacer de letras a numeros como lo podria hacer...porfa si me podrias hacer el favor de guiarme....
Publicado el sábado, 05 de mayo de 2012
Williams dice
Muy bueno, realmente es fantastico, en buena hora para jenny, que sigas adelante, muchas gracias, un saludo desde España
Publicado el miércoles, 11 de abril de 2012
Antonio dice
Hola, saludos a tod@s y mi mas sincero agradecimiento por este excelente código, pues lo he aplicado y funciona perfecto, pues para ciertos trabajos no necesito tocar decimales y me viene como anillo al dedo. Una vez dicho esto y dado que en mi trabajo a veces debo hacer presentaciones en donde se combinan tanto números en formato números como en texto y combinados, mis preguntas son, - ¿como podría retocar este código para que volviese a trasladar las letras a números?. - ¿se podría insertar un botón o dos y dos Texbox para hacer la conversión de uno a otro según nos interese?. - ¿Podría concatenarse para que saliesen en texto unidas diferentes celdas ya sean en números como en textos?. Muchas gracias por anticipado y sé que algunas cuestiones no son fáciles, por eso solo puedo preguntar a expertos, ya que solo soy un usuario algo aplicado. Saludos y mis respetos.
Publicado el jueves, 29 de marzo de 2012
romeo dice
Me gustaria saber de que forma poder añadirle decimales y si hay que hacer algun cambio en el dipo de dato de la DB o solamente añadirlo al codigo en VB8. gracias me urge!
Publicado el martes, 27 de marzo de 2012
Ma Cristina dice
Muy bueno, pero lo quiero sin el SON: y que no quede entre parentesis. mil gracias
Publicado el lunes, 27 de febrero de 2012
pablo dice
No puedo utilizarlo, me ayudan.
Publicado el viernes, 17 de febrero de 2012
Comentar el artículo
Nombre:
Mail:
Comentario:
Código de seguridad:
Captcha
Repite el código de seguridad

Los trucos más leídos de Visual Basic.NET