Función Numeros a Letras

Embed Size (px)

Citation preview

  • 7/24/2019 Funcin Numeros a Letras

    1/4

    Funcin numeros a letras

    Un poco de historia; esta funcin es una de las ms recurridas en la mayora de los lenguajes de programacin, a casitodos los programadores, en algn momento nos sirve o nos la solicitan, esta funcin hace la utilsima tarea demostrar un valor numrico en su equivalente en texto o palaras, a lo largo de mi andar por la red, he visto ms demedia docena de versiones de esta funcin, cada una con sus pros y sus contras, tanto como esta, nuestra versin, y

    dijo nuestra por que el algoritmo que uso no es original mo, sino de un amigo que se llama Samuel Monjaraz,experto en el estupendo !lipper y ahora en "isual #ox, de hecho la primer versin en $asic tamin el la hi%o, mi

    tarea solo ha sido hacerle unos ajustes y darla a conocer, la primer versin ya tiene muchos a&os, no recuerdocuantos y a lo largo de estos, la he proporcionado por la mayora de los lugares donde a sido posile, tal ve% hasta latengas y no sepas de quien es, a algunos usuarios no les gusta mantener los crditos, pero en la mayora de los casos,los algoritmos son claramente diferenciales y el de mi amigo me gusta mucho, en la 'gina del (uille, tiene unamuy uena versin, es ms completa que esta, pues le puedes decir el nomre de la moneda, si es femenina omasculina, el nomre de los cntimos entre otras moneras)

    *n los a&os que llevo programando, nunca he usado otra moneda ni otro formato ms que el de +xico, si tu eresinternacional y usas varias monedas, te felicito y te recomiendo usar la versin del (uille, pero si tan solo usas tumoneda local, te recomiendo adaptar esta versin, de hecho, me gustara compilar en esta pgina, las versiones dediferentes pases, as que si en tu pas se usa otro estilo y moneda, me dices como es y la agregamos a esta pgina)))*n +xico, los nmeros en letras los mostramos en el siguiente formato

    -.,/01)23 456!* +78 9:*!7*

    'ara extraer tres +i&itos ca+a "ez o>hilec5 hilec52

  • 7/24/2019 Funcin Numeros a Letras

    2/4

    'Extrae un +i&ito ca+a "ez +e iz*uier+a a +erecha +i& ( )al8Mi+8um4mp6 pos6 ;; Select0asec52 0ase: cen ( +i& 0ase2: +ec ( +i& 0ase3: uni ( +i&

    En+Select c52 ( c52 pos ( pos 1oop letra3 ( 0entena8uni6 +ec6 cen; letra2 ( ecena8uni6 +ec; letra ( /ni+a+8uni6 +ec;

    Select0asec5 0ase $cen +ec uni ( 4hen 1e#en+a ( =Billon = Else$cen +ec uni A 4hen

    1e#en+a ( =Billones = En+$ 0ase2 $cen +ec uni A( %n+)al8Mi+8um4mp6 76 3;; ( 5 4hen 1e#en+a ( =Mil Millones = Else$cen +ec uni A( 4hen 1e#en+a ( =Mil = En+$ 0ase3 $cen +ec ( 5 %n+uni ( 4hen 1e#en+a ( =Millon = Else$cen A 5 Or+ec A 5 Oruni A 4hen 1e#en+a ( =Millones = En+$ 0ase $cen +ec uni A( 4hen 1e#en+a ( =Mil = En+$ 0ase? $cen +ec uni A( 4hen 1e#en+a ( == En+$ En+Select

    c5 ( c5 4,umero ( 4,umero letra3 letra2 letra 1e#en+a

    1e#en+a ( == letra ( == letra2 ( == letra3 ( == 1oop$)al8um4mp; ( 5 Or)al8um4mp; < 4hen

    1e#en+a ( =0ero esos = Else$)al8um4mp; ( Or)al8um4mp; < 2 4hen 1e#en+a ( =eso = Else$)al8Mi+8um4mp6 6 2;; ( 5 Or)al8Mi+8um4mp6 56 C;; ( 5 4hen 1e#en+a ( =+e esos = Else

    1e#en+a ( =esos = En+$

  • 7/24/2019 Funcin Numeros a Letras

    3/4

    'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 'ota: la $uncion Str0on" solo $unciona en Excel2555 en a+elante4,umero ( 4,umero 1e#en+a

    Select0aseEstilo 0ase 4,umero ( Str0on"84,umero6 "b/pper0ase;

    0ase2 4,umero ( Str0on"84,umero6 "b1o!er0ase; 0aseElse 4,umero ( Str0on"84,umero6 "broper0ase; En+Select4,umero ( =8= 4,umero Mi+8um4mp6 7; =55 M..;=

    um1etras ( 4,umero

    En+,unction

    ri"ate,unction0entena8B#)aluni %snte&er6 B#)al+ec %snte&er6 F

    B#)alcen %snte&er; %sStrin&imc4exto %sStrin&

    Select0asecen 0ase $+ec uni ( 5 4hen c4exto ( =cien = Else c4exto ( =ciento = En+$ 0ase2: c4exto ( =+oscientos = 0ase3: c4exto ( =trescientos = 0ase: c4exto ( =cuatrocientos = 0ase?: c4exto ( =*uinientos = 0aseC: c4exto ( =seiscientos = 0ase7: c4exto ( =setecientos = 0aseG: c4exto ( =ochocientos = 0ase9: c4exto ( =no"ecientos = 0aseElse: c4exto ( == En+Select 0entena ( c4extoEn+,unction

    ri"ate,unctionecena8B#)aluni %snte&er6 B#)al+ec %snte&er; %sStrin&imc4exto %sStrin&Select0ase+ec

    0ase: Select0aseuni 0ase5: c4exto ( =+iez = 0ase: c4exto ( =once = 0ase2: c4exto ( =+oce = 0ase3: c4exto ( =trece = 0ase: c4exto ( =catorce = 0ase?: c4exto ( =*uince = 0aseC 4o9: c4exto ( =+ieci= En+Select 0ase2: $uni ( 5 4hen

    c4exto ( ="einte = Else$uni A 5 4hen c4exto ( ="einti=

  • 7/24/2019 Funcin Numeros a Letras

    4/4

    En+$ 0ase3: c4exto ( =treinta = 0ase: c4exto ( =cuarenta = 0ase?: c4exto ( =cincuenta = 0aseC: c4exto ( =sesenta = 0ase7: c4exto ( =setenta =

    0aseG: c4exto ( =ochenta = 0ase9: c4exto ( =no"enta = 0aseElse: c4exto ( == En+Select$uni A 5 %n++ec A 2 4henc4exto ( c4exto =# =

    ecena ( c4exto

    En+,unction

    ri"ate,unction/ni+a+8B#)aluni %snte&er6 B#)al+ec %snte&er; %sStrin&imc4exto %sStrin&

    $+ec