Título: Representación de un número Publicado por: maikmilk en 5 Junio 2012, 17:04 pm El problema es el siguiente para representar en java un número en java muy grande el numero se representa de la siguiente forma "2.305843009213694E18" o sea el número elevado a algo
Hay forma de representar el número tal cual?? Yo e encontrado lo siguiente: Código
"DecimalFormat decimal = new DecimalFormat("")" Pero el número que sale por pantalla es el siguiente: Código
O sea el número 2.305.843.009.213.694.000 cuando realmente 2^61 es 2305843009213693951, por que se pierde tanta precisión? Título: Re: Representación de un número Publicado por: lluvplay en 5 Junio 2012, 17:46 pm hola amigo!!! creo que tu solucion es usar el tipo de dato BigDecimal de la libreria Math
yo he probado con tu código y la transformación y pues listo me a funcionado. Espero haber podido ayudar !!!! saludos. Código: public class Prueva { Anexo un ultimo datito BigDecimal de ta precicion!!! ::) ::) ::) ::) ::) ::) ::) ::) ::) ::) ::) ::) ::) ::) ::) Título: Re: Representación de un número Publicado por: maikmilk en 5 Junio 2012, 18:34 pm Perfecto!!!
Mi ultima duda es posible ahora almacenar esa variable opp en un double o en un long? Porque a la hora de usarla en condicionales un BigDecimal no lo puedo usar ya que da un error "incomparable types: java.math.BigDecimal and int". Todo esto sin perder precisión. Título: Re: Representación de un número Publicado por: lluvplay en 5 Junio 2012, 18:57 pm Puedes ser un poco mas especifico con lo que se quiere condicionar ?
ejemplo si queremos condicionar double respuesta=math.pow(2,61); if (respuesta ==2.305843009213694E18) /// sentencias si es cierto else // sentencias si es falso condicionalo asi q es igual !!! solo sinecesitas mostrar resultados as la tranformacion a BigDecimal. ejemplo BigDecimal respuesta_de_bigdecimal= new BigDecimal(respuesta); System.out.print(respuesta_de_bigdecimal); pero si tienes q hacer bajo codigo he operaciones algebraicas y condiciones mi recomendacion es q lo trates con double y conviertas al final lo q es salida !!! he intentado convertir el valor pero me devuelve valores con letras !!! asiq ps noc si estoy aclarando la duda pero hay vamos cualquiera cosa comentemos y listo !!! Saludos.... ::) ::) ::) ::) ::) ::) ::) ::) ::) ::) ::) ::) ::) ::) Título: Re: Representación de un número Publicado por: maikmilk en 5 Junio 2012, 19:08 pm esta noche te he enseño todo el código y el problema en concreto
Título: Re: Representación de un número Publicado por: maikmilk en 5 Junio 2012, 22:18 pm Código
Como veras cuando calculo si el numero es primo o no utilizo condicionales "if(op == 2)", y si utilizo op en vez de opp(BigDecimal) el numero no es realmente el número que toca y el programa falla. Es decir el numero 2^61 en double seria: 2.305843009213694E18 lo que realmente es 2305843009213693951 el cual es un número primo pero si entra como double no interpreta el número que realmente es y no lo toma como primo. Por eso cuando se hace "if(op == 2)" necesito que op sea 2305843009213693951 y no 2.305843009213694E18. Un poco lio no jajajjaa, esto no corre prisa ni es para nada es todo autodidacta y para aprender, si puedes o crees que se puede mejorar el código me encantaria discutirlo. Gracias Título: Re: Representación de un número Publicado por: lluvplay en 6 Junio 2012, 16:48 pm He provado usando el op como double y no importa si estoy trabajando con 2.305843009213694E18 igual me debuelve que su residuo es 0 !!!
solo una observacion que en el for se manifiesta un i=2 incializado. si vemos el op= math.pow(2,i); eso seria minimo 4 entonces no comprendo el if(op==2) jejeje no se si me doy ha entender o estoy comprendiendo mal la secuencia de mersenne. |