elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Libreria] Convertir Numeros a Letras/Texto (solved)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Libreria] Convertir Numeros a Letras/Texto (solved)  (Leído 5,771 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
[Libreria] Convertir Numeros a Letras/Texto (solved)
« en: 25 Febrero 2012, 21:24 pm »

Buen dia.

Alguien que me recomiende una libreria para convertir valores numericos a letras ?, necesi que mi sistema pueda interpretar un valor a letras, estos valores son cifras numericas tomadas como montos economicos (dinero).

Estuve utilizando una libreria, pero sinceramente falla mucho cuando existen 3 Ceros seguidos, por ejemplo: 8,000.50.

Saludos !


« Última modificación: 27 Febrero 2012, 18:30 pm por Diabliyo » En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: [Libreria] Convertir Numeros a Letras/Texto
« Respuesta #1 en: 27 Febrero 2012, 18:29 pm »

Ya encontre una libreria, solo le hice una modificacion en la funcion principal para que lea los centavos y los exprese contablemente bien.

Saludos !

Código
  1. <?php
  2.  
  3.  
  4. function unidad($numuero){
  5. switch ($numuero)
  6. {
  7. case 9:
  8. {
  9. $numu = "NUEVE";
  10. break;
  11. }
  12. case 8:
  13. {
  14. $numu = "OCHO";
  15. break;
  16. }
  17. case 7:
  18. {
  19. $numu = "SIETE";
  20. break;
  21. }
  22. case 6:
  23. {
  24. $numu = "SEIS";
  25. break;
  26. }
  27. case 5:
  28. {
  29. $numu = "CINCO";
  30. break;
  31. }
  32. case 4:
  33. {
  34. $numu = "CUATRO";
  35. break;
  36. }
  37. case 3:
  38. {
  39. $numu = "TRES";
  40. break;
  41. }
  42. case 2:
  43. {
  44. $numu = "DOS";
  45. break;
  46. }
  47. case 1:
  48. {
  49. $numu = "UN";
  50. break;
  51. }
  52. case 0:
  53. {
  54. $numu = "";
  55. break;
  56. }
  57. }
  58. return $numu;
  59. }
  60.  
  61. function decena($numdero){
  62.  
  63. if ($numdero >= 90 && $numdero <= 99)
  64. {
  65. $numd = "NOVENTA ";
  66. if ($numdero > 90)
  67. $numd = $numd."Y ".(unidad($numdero - 90));
  68. }
  69. else if ($numdero >= 80 && $numdero <= 89)
  70. {
  71. $numd = "OCHENTA ";
  72. if ($numdero > 80)
  73. $numd = $numd."Y ".(unidad($numdero - 80));
  74. }
  75. else if ($numdero >= 70 && $numdero <= 79)
  76. {
  77. $numd = "SETENTA ";
  78. if ($numdero > 70)
  79. $numd = $numd."Y ".(unidad($numdero - 70));
  80. }
  81. else if ($numdero >= 60 && $numdero <= 69)
  82. {
  83. $numd = "SESENTA ";
  84. if ($numdero > 60)
  85. $numd = $numd."Y ".(unidad($numdero - 60));
  86. }
  87. else if ($numdero >= 50 && $numdero <= 59)
  88. {
  89. $numd = "CINCUENTA ";
  90. if ($numdero > 50)
  91. $numd = $numd."Y ".(unidad($numdero - 50));
  92. }
  93. else if ($numdero >= 40 && $numdero <= 49)
  94. {
  95. $numd = "CUARENTA ";
  96. if ($numdero > 40)
  97. $numd = $numd."Y ".(unidad($numdero - 40));
  98. }
  99. else if ($numdero >= 30 && $numdero <= 39)
  100. {
  101. $numd = "TREINTA ";
  102. if ($numdero > 30)
  103. $numd = $numd."Y ".(unidad($numdero - 30));
  104. }
  105. else if ($numdero >= 20 && $numdero <= 29)
  106. {
  107. if ($numdero == 20)
  108. $numd = "VEINTE ";
  109. else
  110. $numd = "VEINTI".(unidad($numdero - 20));
  111. }
  112. else if ($numdero >= 10 && $numdero <= 19)
  113. {
  114. switch ($numdero){
  115. case 10:
  116. {
  117. $numd = "DIEZ ";
  118. break;
  119. }
  120. case 11:
  121. {
  122. $numd = "ONCE ";
  123. break;
  124. }
  125. case 12:
  126. {
  127. $numd = "DOCE ";
  128. break;
  129. }
  130. case 13:
  131. {
  132. $numd = "TRECE ";
  133. break;
  134. }
  135. case 14:
  136. {
  137. $numd = "CATORCE ";
  138. break;
  139. }
  140. case 15:
  141. {
  142. $numd = "QUINCE ";
  143. break;
  144. }
  145. case 16:
  146. {
  147. $numd = "DIECISEIS ";
  148. break;
  149. }
  150. case 17:
  151. {
  152. $numd = "DIECISIETE ";
  153. break;
  154. }
  155. case 18:
  156. {
  157. $numd = "DIECIOCHO ";
  158. break;
  159. }
  160. case 19:
  161. {
  162. $numd = "DIECINUEVE ";
  163. break;
  164. }
  165. }
  166. }
  167. else
  168. $numd = unidad($numdero);
  169. return $numd;
  170. }
  171.  
  172. function centena($numc){
  173. if ($numc >= 100)
  174. {
  175. if ($numc >= 900 && $numc <= 999)
  176. {
  177. $numce = "NOVECIENTOS ";
  178. if ($numc > 900)
  179. $numce = $numce.(decena($numc - 900));
  180. }
  181. else if ($numc >= 800 && $numc <= 899)
  182. {
  183. $numce = "OCHOCIENTOS ";
  184. if ($numc > 800)
  185. $numce = $numce.(decena($numc - 800));
  186. }
  187. else if ($numc >= 700 && $numc <= 799)
  188. {
  189. $numce = "SETECIENTOS ";
  190. if ($numc > 700)
  191. $numce = $numce.(decena($numc - 700));
  192. }
  193. else if ($numc >= 600 && $numc <= 699)
  194. {
  195. $numce = "SEISCIENTOS ";
  196. if ($numc > 600)
  197. $numce = $numce.(decena($numc - 600));
  198. }
  199. else if ($numc >= 500 && $numc <= 599)
  200. {
  201. $numce = "QUINIENTOS ";
  202. if ($numc > 500)
  203. $numce = $numce.(decena($numc - 500));
  204. }
  205. else if ($numc >= 400 && $numc <= 499)
  206. {
  207. $numce = "CUATROCIENTOS ";
  208. if ($numc > 400)
  209. $numce = $numce.(decena($numc - 400));
  210. }
  211. else if ($numc >= 300 && $numc <= 399)
  212. {
  213. $numce = "TRESCIENTOS ";
  214. if ($numc > 300)
  215. $numce = $numce.(decena($numc - 300));
  216. }
  217. else if ($numc >= 200 && $numc <= 299)
  218. {
  219. $numce = "DOSCIENTOS ";
  220. if ($numc > 200)
  221. $numce = $numce.(decena($numc - 200));
  222. }
  223. else if ($numc >= 100 && $numc <= 199)
  224. {
  225. if ($numc == 100)
  226. $numce = "CIEN ";
  227. else
  228. $numce = "CIENTO ".(decena($numc - 100));
  229. }
  230. }
  231. else
  232. $numce = decena($numc);
  233.  
  234. return $numce;
  235. }
  236.  
  237. function miles($nummero){
  238. if ($nummero >= 1000 && $nummero < 2000){
  239. $numm = "MIL ".(centena($nummero%1000));
  240. }
  241. if ($nummero >= 2000 && $nummero <10000){
  242. $numm = unidad(Floor($nummero/1000))." MIL ".(centena($nummero%1000));
  243. }
  244. if ($nummero < 1000)
  245. $numm = centena($nummero);
  246.  
  247. return $numm;
  248. }
  249.  
  250. function decmiles($numdmero){
  251. if ($numdmero == 10000)
  252. $numde = "DIEZ MIL";
  253. if ($numdmero > 10000 && $numdmero <20000){
  254. $numde = decena(Floor($numdmero/1000))."MIL ".(centena($numdmero%1000));
  255. }
  256. if ($numdmero >= 20000 && $numdmero <100000){
  257. $numde = decena(Floor($numdmero/1000))." MIL ".(miles($numdmero%1000));
  258. }
  259. if ($numdmero < 10000)
  260. $numde = miles($numdmero);
  261.  
  262. return $numde;
  263. }
  264.  
  265. function cienmiles($numcmero){
  266. if ($numcmero == 100000)
  267. $num_letracm = "CIEN MIL";
  268. if ($numcmero >= 100000 && $numcmero <1000000){
  269. $num_letracm = centena(Floor($numcmero/1000))." MIL ".(centena($numcmero%1000));
  270. }
  271. if ($numcmero < 100000)
  272. $num_letracm = decmiles($numcmero);
  273. return $num_letracm;
  274. }
  275.  
  276. function millon($nummiero){
  277. if ($nummiero >= 1000000 && $nummiero <2000000){
  278. $num_letramm = "UN MILLON ".(cienmiles($nummiero%1000000));
  279. }
  280. if ($nummiero >= 2000000 && $nummiero <10000000){
  281. $num_letramm = unidad(Floor($nummiero/1000000))." MILLONES ".(cienmiles($nummiero%1000000));
  282. }
  283. if ($nummiero < 1000000)
  284. $num_letramm = cienmiles($nummiero);
  285.  
  286. return $num_letramm;
  287. }
  288.  
  289. function decmillon($numerodm){
  290. if ($numerodm == 10000000)
  291. $num_letradmm = "DIEZ MILLONES";
  292. if ($numerodm > 10000000 && $numerodm <20000000){
  293. $num_letradmm = decena(Floor($numerodm/1000000))."MILLONES ".(cienmiles($numerodm%1000000));
  294. }
  295. if ($numerodm >= 20000000 && $numerodm <100000000){
  296. $num_letradmm = decena(Floor($numerodm/1000000))." MILLONES ".(millon($numerodm%1000000));
  297. }
  298. if ($numerodm < 10000000)
  299. $num_letradmm = millon($numerodm);
  300.  
  301. return $num_letradmm;
  302. }
  303.  
  304. function cienmillon($numcmeros){
  305. if ($numcmeros == 100000000)
  306. $num_letracms = "CIEN MILLONES";
  307. if ($numcmeros >= 100000000 && $numcmeros <1000000000){
  308. $num_letracms = centena(Floor($numcmeros/1000000))." MILLONES ".(millon($numcmeros%1000000));
  309. }
  310. if ($numcmeros < 100000000)
  311. $num_letracms = decmillon($numcmeros);
  312. return $num_letracms;
  313. }
  314.  
  315. function milmillon($nummierod){
  316. if ($nummierod >= 1000000000 && $nummierod <2000000000){
  317. $num_letrammd = "MIL ".(cienmillon($nummierod%1000000000));
  318. }
  319. if ($nummierod >= 2000000000 && $nummierod <10000000000){
  320. $num_letrammd = unidad(Floor($nummierod/1000000000))." MIL ".(cienmillon($nummierod%1000000000));
  321. }
  322. if ($nummierod < 1000000000)
  323. $num_letrammd = cienmillon($nummierod);
  324.  
  325. return $num_letrammd;
  326. }
  327.  
  328.  
  329. function convertir_a_letras($numero) {
  330.   $numf = milmillon($numero);
  331.  
  332. if( strstr($numero, ".") )
  333. {
  334. $y= explode( ".", number_format($numero,2) );
  335. $deno .= ' '. $y[1];
  336. unset($y);
  337. }
  338. else
  339. $deno .= ' 00';
  340. $deno .= '/100 MXN';
  341.  
  342. return strtolower($numf." PESOS "). $deno;
  343. }
  344. ?>


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Decifrador de numeros a letras [JAVA]
Java
diegoak 1 4,330 Último mensaje 16 Marzo 2005, 16:27 pm
por diegoak
Como convertir numeros decimales a numeros binario en c++?
Programación C/C++
fco_noh 3 8,932 Último mensaje 31 Agosto 2010, 07:38 am
por do-while
Redes ONOXXXX letras y numeros
Hacking Wireless
josemanuelsurf 6 15,769 Último mensaje 7 Julio 2011, 14:37 pm
por frakc/kcdtv
Pantalla del navegador es como una hoja de texto ? (solved)
GNU/Linux
Diabliyo 2 2,616 Último mensaje 22 Febrero 2011, 17:02 pm
por Diabliyo
Convertir numeros a letras « 1 2 »
Programación Visual Basic
NightMoonKiller 10 7,606 Último mensaje 11 Mayo 2011, 06:32 am
por BlackZeroX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines