Título: Ayuda con un problema... Publicado por: Zero_1 en 22 Noviembre 2007, 18:05 pm hola; necesito imprimir una moneda asi:
ejemplo: si ingreso $432.22 y que en la impresion salga *******Cuatrocientos Treinta y Dos con 22/100******* alguien sabe la respuesta??? gracias... Título: Re: Ayuda con un problema... Publicado por: egyware en 22 Noviembre 2007, 20:03 pm mmm
no es tan dificil como uno lo piensa primero create una clase para eso segundo a un metodo pasale tu numero luego separa las unidades, decimas, y centecimas....(ejemplo 400 10 1 ....) y luego las comparas y en un String guardas tu resultado tienes tu numero 458 lo divides por 100 458/100= 4.58 -> guardas solo el numero entero por ejeplo en int centena; luego le restas centena*100 y te queda numero - centena*100 =58 luego tu nuevo numero que te queda lo divides por 10 58/10 = 5.8 -> guardas solo el numero entero en int decena y haces lo mismo le restas decena * 10 y te quedara 8 y lo guardas luego con if o switch comparas centenas, decenas y unidades comparas para que tomen sus respectivos nombre ej switch(decena){ case 1: String Wordnum = Wordnum + "Diez"; ..... y haces lo mismo con los decimales no se me ocurrio pero puedes hacer algo parecido espero que te aya ayudado y cuando tengas la clase subela porfa como pa verla y como te a queda tu creacion xaaauuuu suerte Título: Re: Ayuda con un problema... Publicado por: Hearts en 22 Noviembre 2007, 20:35 pm Eso esta muy bien y creo que es la unica manera, aunque el creo que quiere que al insertar un valor se lo muestre como cadena y no tener que poner tu "a mano" en el codigo que 10 es "diez".
Pero bueno como te dijeron arriba asi es una forma y encontre por google un codigo mas o menos orientativo: Código: public class conversionNumeroEnCadena { private int flag; public int numero; public String num; public String num_letra; public String num_letras; public String num_letram; public conversionNumeroEnCadena(){ numero = 0; flag=0; } public conversionNumeroEnCadena(int n){ numero = n; flag=0; } private String unidad(int numero){ switch (numero){ case 9: num = "nueve"; break; case 8: num = "ocho"; break; ........... ........... case 2: num = "dos"; break; case 1: if (flag == 0) num = "uno"; else num = "un"; break; case 0: num = ""; break; } return num; } private String decena(int numero){ if (numero >= 90 && numero <= 99) { num_letra = "noventa "; if (numero > 90) num_letra = num_letra.concat("y ").concat(unidad(numero - 90)); } else if (numero >= 80 && numero <= 89) { num_letra = "ochenta "; if (numero > 80) num_letra = num_letra.concat("y ").concat(unidad(numero - 80)); } ........... ........... if (numero == 20) num_letra = "veinte "; else num_letra = "veinti".concat(unidad(numero - 20)); } else if (numero >= 10 && numero <= 19) { switch (numero){ case 10: num_letra = "diez "; break; case 11: num_letra = "once "; break; case 12: num_letra = "doce "; break; .............. .............. case 19: num_letra = "diecinueve "; break; } } else num_letra = unidad(numero); return num_letra; } private String centena(int numero){ if (numero >= 100) { if (numero >= 900 && numero <= 999) { num_letra = "novecientos "; if (numero > 900) num_letra = num_letra.concat(decena(numero - 900)); } else if (numero >= 800 && numero <= 899) { num_letra = "ochocientos "; if (numero > 800) num_letra = num_letra.concat(decena(numero - 800)); } ........... ........... else if (numero >= 200 && numero <= 299) { num_letra = "doscientos "; if (numero > 200) num_letra = num_letra.concat(decena(numero - 200)); } else if (numero >= 100 && numero <= 199) { if (numero == 100) num_letra = "cien "; else num_letra = "ciento ".concat(decena(numero - 100)); } } else num_letra = decena(numero); return num_letra; } private String miles(int numero){ if (numero >= 1000 && numero <2000){ num_letram = ("mil ").concat(centena(numero%1000)); } if (numero >= 2000 && numero <10000){ flag=1; num_letram = unidad(numero/1000).concat("mil").concat (centena(numero%1000)); } if (numero < 1000) num_letram = centena(numero); return num_letram; } public String convertirLetras(int numero){ num_letras = miles(numero); return num_letras; } } De Santana salu2 Título: Re: Ayuda con un problema... Publicado por: Zero_1 en 25 Noviembre 2007, 03:14 am Código: public class conversionNumeroEnCadena { private int flag; public int numero; public String num; public String num_letra; public String num_letras; public String num_letram; public conversionNumeroEnCadena(){ numero = 0; flag=0; } public conversionNumeroEnCadena(int n){ numero = n; flag=0; } private String unidad(int numero){ switch (numero){ case 9: num = "nueve"; break; case 8: num = "ocho"; break; ........... ........... case 2: num = "dos"; break; case 1: if (flag == 0) num = "uno"; else num = "un"; break; case 0: num = ""; break; } return num; } private String decena(int numero){ if (numero >= 90 && numero <= 99) { num_letra = "noventa "; if (numero > 90) num_letra = num_letra.concat("y ").concat(unidad(numero - 90)); } else if (numero >= 80 && numero <= 89) { num_letra = "ochenta "; if (numero > 80) num_letra = num_letra.concat("y ").concat(unidad(numero - 80)); } ........... ........... if (numero == 20) num_letra = "veinte "; else num_letra = "veinti".concat(unidad(numero - 20)); } else if (numero >= 10 && numero <= 19) { switch (numero){ case 10: num_letra = "diez "; break; case 11: num_letra = "once "; break; case 12: num_letra = "doce "; break; .............. .............. case 19: num_letra = "diecinueve "; break; } } else num_letra = unidad(numero); return num_letra; } private String centena(int numero){ if (numero >= 100) { if (numero >= 900 && numero <= 999) { num_letra = "novecientos "; if (numero > 900) num_letra = num_letra.concat(decena(numero - 900)); } else if (numero >= 800 && numero <= 899) { num_letra = "ochocientos "; if (numero > 800) num_letra = num_letra.concat(decena(numero - 800)); } ........... ........... else if (numero >= 200 && numero <= 299) { num_letra = "doscientos "; if (numero > 200) num_letra = num_letra.concat(decena(numero - 200)); } else if (numero >= 100 && numero <= 199) { if (numero == 100) num_letra = "cien "; else num_letra = "ciento ".concat(decena(numero - 100)); } } else num_letra = decena(numero); return num_letra; } private String miles(int numero){ if (numero >= 1000 && numero <2000){ num_letram = ("mil ").concat(centena(numero%1000)); } if (numero >= 2000 && numero <10000){ flag=1; num_letram = unidad(numero/1000).concat("mil").concat (centena(numero%1000)); } if (numero < 1000) num_letram = centena(numero); return num_letram; } public String convertirLetras(int numero){ num_letras = miles(numero); return num_letras; } } De Santana salu2 tambien habia encontrado ese codigo; igual mi problema es con los decimales; no logro escribir el "**** con 32/100 ***** Aun asi gracias PD.: egyware, "mi creacion" te la debo ya que asi no es lo que necesito pero gracias por el aporte Título: Re: Ayuda con un problema... Publicado por: egyware en 26 Noviembre 2007, 13:43 pm :huh: :huh:
tu tienes problema al sacar los decimales :-( mmmm loading... se ve dificil pero se me ocurio algo tienes tu decimal .xxxx lo multiplicas por diez y te queda x.xxx (la idea es dejarlo sin decimales) luego compruebas los decimales restantes sean mayores a 1 sino lo vuelves a multiplicar por 10 hasta que no quedes con decimales, cuando no quedes con decimales y quedes con un numero algo asi xxxx.0 ldebes saber cuantas veces sera que multiplicaste por 10 (para eso deberias haber guardado en un int)que ese numero sera el exponencial de tu denominador en este caso seria algo asi ***** xxxx/10n **** y n es la cantidad de decimales espero que te sirva xauu suerte PS:No te servira con decimales periodicos ya que la division es x/9 y en la básica(o primaria en otros paises) jamas aprendi como hacerlo :-( :D :D :D :xD :xD :¬¬ Título: Re: Ayuda con un problema... Publicado por: Zero_1 en 30 Noviembre 2007, 13:39 pm al ver mi error un poco lo que hice fue agarrar el numero flotante y restarle la parte entera de este y guardar el resultado e imprimirlo con el DecimalFormat
Código: DecimalFormat formato = new DecimalFormat(".##"); sn = valor; num = (float)sn; iPart = (int) num; fPart = num - iPart; ejemplo: 453.21 = valor entonces mi respuesta me daba 0.21 y el DecimalFormat me lo puso a .21 y solo coloque este resultado; gracias a todos x la ayuda |