jueves, 26 de enero de 2012

Un pequeño programa para obtener decimales infinitos xD (si quieres :D)

Los que me conozcan sabrán que a pesar de mis extrañas creencias y empanadas mentales tengo una mente bastante cintifica que le gusta corroborar datos XD

Así pues tras leer este articulo se concluye que al dividir 1 entre 998001 nos va a dar una secuencia de números del estilo 0.000001002003004005006007008... [...] ...9969979990000001002003 perfectamente ordenada y "asín" sucesivamente hasta el infinito y mas allá xD (notese el 000>001>002>003>etc...)

bueno, teniendo en cuenta la cantidad de cosas sobre matematicas y curiosidades falsas q rulan por ahi no me podía quedar tranquilo si no lo comprobaba realmente, y obviamente la calculadore de Windows no me deja poner tantos decimales...

asi que he hecho un pequeño programita en java y lo voy a colgar por si a alguien le sirve pues quizas alguien algún dia quiera hacer una división indefinidamente y poder sacar el resultado por pantalla o hacerle un append a un fichero. (por ejemplo si quieres calcular cifras infinitas de PI en base a este y añadiendo un par de metodos podrias hacerlo y quitarle el record guiness al actual. (que creo que es japo) total tendrías que tener tu pc encendido por unos 200 o 250 dias y necesitarias unos 4TB de disco duro para almacenarlo :D :D

Bueno, yendo a cosas mas serias esto es una aplicación básica con el algoritmo de división por resta para hacer divisiones muy largas cuyos resultados no caben en los 64 bits del double ^^


ah! y aqui el programa! :D


public class CreaDecimal
{
public void main(String args[]){
int uno = 1;
double div = 998001;
System.out.println("");
division(uno,div);




}

public void division(double a, double b){
double aa = a; double bb = b;
int limite = 3020;
if(aa<bb){
aa=aa*10; System.out.print("0.");
}
while(limite>0){
aa = sacardigito(aa,bb);
limite--;

}


}


public double sacardigito(double a, double b){
double z; int cont=0; boolean palanca = true;

while(a<=b){
a = a*10;
System.out.print(0);
}

z=a;
while (z>=b){
z = z-b;

cont++;
}
System.out.print(cont);
return z*10;

}


}

No hay comentarios: