Java - Numero muy grandes en Java

 
Vista:

Numero muy grandes en Java

Publicado por nhebone (7 intervenciones) el 18/12/2007 17:03:18
Hola, tengo un problema, tengo un programa que genera unos números de forma recursiva.
El problema es que este número crece de un forma muy elevada y el tipo long se desborda.
Había pensado en utilizar un array de enteros y en cada posición guardar un dígito de mi número..de esta forma podría guardas números extremadamente grandes.
El problema es que no sé como implementarlo...
¿¿¿Alguna sugerencia???

Muchísimas gracias.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Numero muy grandes en Java

Publicado por putahostia (69 intervenciones) el 18/12/2007 20:32:26
java.math.BigInteger
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Numero muy grandes en Java

Publicado por nhebone (1 intervención) el 19/12/2007 22:17:38
Creo que no me has entendido bien, he dicho guardar números MUY grandes de unas 100 cifras..

Un consejo si contestas en plan sabelotodo poniendo únicamente la librería que hay que importar o sobre la que hay que informarse, al menos hazlo bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Numero muy grandes en Java

Publicado por putahostia (69 intervenciones) el 20/12/2007 08:22:22
Vamos por partes.

Sí, te he entendido muy bien. Números muy, muy, pero que muy grandes. El hecho de que la clase BigInteger no define una constante MAX_VALUE ya es significativo. BigInteger acepta cualquier número, y cuando digo "cualquier", me refiero exactamente a esto - cualquier número. La documentación dice "Immutable arbitrary-precision integers". Y mi experiencia dice que sí, puede ser lo grande que uno quiera. Abajo te pego un trocito de código que genera dos números de 100 cifras y los multiplica. La multiplicación da un resultado de casi 200 cifras y el BigInteger se queda "immutable". Como era de esperar.

Ahora bien. Segunda parte.
No voy de "sabelotodo". Voy de "sábelo". Que ya es mas que lo que sabes tu, si no - no preguntarias.
Y cuando respondo en un foro, que como todas las respuestas en los foros son de buena voluntad, sin ánimo de lucro y sin ningún beneficio para el autor de la respuesta, no espero que se me agradezca la respuesta. No. Por lo menos hasta ahora nadie (o casi nadie) me ha dado las gracias. Y menos en este foro. Pero tampoco espero que se me incordie. Si te he respondido, piensa que he perdido parte de mi tiempo en darte algo (un conocimiento) a cambio de nada. En tu caso - a cambio de increpancias, pero mejor no contarlo como "algo" ¿verdad?
En vez de intentar ponerme verde, de sabelotodo (que supongo quierias demostrar que soy un sabelonada) y cosas por el estilo, mejor que hubieses perdido algo de tu tiempo buscando el javadoc de la clase BigInteger, leer algo sobre el tema y hacer unas pruebecillas. Así sabrías lo que tienes que saber.

Cuando me responden a una pregunta (despues de haber buscado y no encontrado una respuesta satisfactoria, no a la primera), por muy corta y no de mi agrado que sea la respuesta, procurro enterarme de que va. Que algo aprenderé.
Pero este soy yo, no tu. Los "sabelotodo" actuamos de otra manera, no como lo haceis ... ¿que eres? ¿Un desagradecido?

Bajo tu punto de vista ¿como es "responder bien"? ¿Pegarte aquí el código? ¿Hacerte todo el trabajo?
Vale, te pego el código. No va a cer que no sepas hacértelo solo.
Ahí va la prueba de la existencia de números grandes en Java (que no solo Fortran va a ser para cálculos de ingenería) :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
String s1 = "";
String s2 = "";
 
for (int i = 0; i < 100; i++) {
    java.util.Random random = new java.util.Random();
    int r = random.nextInt(10);
    s1 += r;
}
System.out.println(s1 + " " + s1.length());
 
for (int i = 0; i < 100; i++) {
    java.util.Random random = new java.util.Random();
    int r = random.nextInt(10);
    s2 += r;
}
System.out.println(s2 + " " + s2.length());
 
java.math.BigInteger i1 = new java.math.BigInteger(s1);
java.math.BigInteger i2 = new java.math.BigInteger(s2);
 
java.math.BigInteger i4 = i1.multiply(i2);
 
System.out.println(i4.toString().length() + "   " + i4.toString());
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:Numero muy grandes en Java

Publicado por nhebone (7 intervenciones) el 20/12/2007 17:19:49
He probado tu código y parece que realmente es lo que estaba buscando.

De todas formas sí te digo que me había mirado someramente la documentación de la clase BigInteger y no había encontrado nada de utilidad a simple vista.

No pretendía ofenderte con mi comentario aunque sí quería dejar patente que respuestas del tipo "Usa google" o "java.util.LinkedList" no solucionan nada (o más bien poco) a alguien que quiere aprender.
Por mi parte yo te pido disculpas, es verdad que contestas de forma altruista y no siempre tendrás el mismo humor o las mismas ganas.

Un saludo y gracias, me has sido de gran ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Numero muy grandes en Java

Publicado por putahostia (69 intervenciones) el 20/12/2007 18:33:54
Bueno, me alegro que te haya servido.

Cuando doy una respuesta muy lacónica es porque en el curro tampoco tengo mucho tiempo para hacer el código y extenderme, no por presumir.

Y también doy por hecho que todo el mundo tiene a mano http://java.sun.com/j2se/1.4.2/docs/api/ . Y los que no lo tienen - deberían.

No me enrrollo mas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿como se representa la clase BigInteger en binari?

Publicado por Cesar (1 intervención) el 06/05/2009 17:43:53
Hola por lo visto te repondieron mal, pero bueno io quiero darte las gracias por el codigo es excelente y me saco de apuros, pero permiteme preguntarte como podria saber la manera en como se representa la clase BigInteger en binario de antemano muchas gracias...
Cesar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Numero muy grandes en Java

Publicado por eskizoatm (1 intervención) el 05/03/2013 18:00:58
bueno, yo tambien voy a hacer un comentario constructivo. aunque este texto sea de hace 6 años me ha sido de bastante utilidad, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Numero muy grandes en Java

Publicado por Paul Aguilar (1 intervención) el 29/09/2013 21:22:45
Ha sido de gran ayuda, muchas gracias por compartirlo!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Numero muy grandes en Java

Publicado por MAlexRM (3 intervenciones) el 17/04/2017 05:25:27
hahahahhahah tremenda bofetada le diste, que manera tan elegante, sacaste el guante y plash!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:Numero muy grandes en Java

Publicado por Marcos (1 intervención) el 24/07/2020 07:21:07
Gracias tío, pensé que había que implementarla uno mismo en Java. Con C/C++ siempre he usado GMP.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Sandro
Val: 392
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

RE:Numero muy grandes en Java

Publicado por Sandro (166 intervenciones) el 25/07/2020 00:35:40
mira a mi también cuando he hecho una pregunta, se manda a google, por que muchas de tus, mis, todas las preguntas de todos; muchas ya las hicieron, y si realmente quieres aprender como todos aquí, se aprende de todos.

Es primero buscar y después preguntar.

un ejemplo:

el maquinista de un bote tiene hambre, y viaja con experimentado del mar,
este maquinista tiene poco pero muy poco tiempo en el oficio
le dice al de mas experiencia,
- comemos cuando lleguemos al puerto.
-- perdón (contesta el de mas experiencia)

- es que se estamos en el mar, pero no tengo cordel

-- quieres que yo te de el pescado, para que tu nunca aprendas a pesca
-- hay tenemos redes
-- hay tenemos cuchillos y cerillos
-- solo hay que buscarlos


moraleja, aprender primero a buscar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar