# Wallissche Produkt PI-Annäherung



## JavaRookie21 (14. Nov 2010)

Halli Hallo Leute,
hab eine Hausaufgabe in programmierung bekommen die die ich eigtl schon gelöst hab
also die aufgabe lautet:
Wie viele Faktoren sind notwendig, um sich hinreichend genau bis 5 Stellen nach dem Komma mit dem Wallis-Produkt der Kreiszahl PI anzunähern? Schreiben Sie ein Java Programm, das die Anzahl der Faktoren ermittelt.

So sieht meine Lösung aus:


```
class wallis{
	public static void main(String [] args){
		int n, k, i;
		double p, PI;
		n=1;
		k=1;
		p=2.0;
		i=2;
		PI=3.14159;
		
		while(p!=PI){
			p*=(2.0*n)/(2.0*k-1.0);
			if(i%2==0){
				k++;
			}
			if(i%2!=0){
				n++;
			}
			i++;
			System.out.println("i="+i);
			System.out.println("p="+p);
		}
	}
}
```
jetzt hab ich das Problem das meine while schleife nicht aufhört zu rechnen...er soll ja bei pi=3,14159 aufhören nur macht er das nicht...er rechnet einfach weiter...könnt ihr mir bei diesem kleinen problem vllt weiterhelfen? danke im voraus!


----------



## Marcinek (14. Nov 2010)

Ja du musst aufpassen

PI geht nur 5 stellen weit.

Und p scheint irrational zu sein.

Ergo wird p nie == PI sein.

Und: SUFU

http://www.java-forum.org/hausaufgaben/108747-pi-berechnen.html


----------



## JavaRookie21 (14. Nov 2010)

hab jetzt ne if anweisung angefügt aber er betritt sie nicht ich versteh nicht warum...dann soll er p den wert 3.14159 zuordnen und somit die schleife verlassen...


```
class wallis{
	public static void main(String [] args){
		int n, k, i;
		double p, PI;
		n=1;
		k=1;
		p=200000.0;
		i=2;
		PI=3.14159;
		
		while(p!=PI){
			p*=(2.0*n)/(2.0*k-1.0);
			if(i%2==0){
				k++;
			}
			if(i%2!=0){
				n++;
			}
			if((p%10==9)&&((p/10)%10==5)&&((p/100)%10==1)&&((p/1000)%10==4)&&((p/10000)%10==1)&&((p/100000)%10==3)){
				p=3.14159;
			}
			i++;
			System.out.println("p="+p);
		}
		System.out.println("i="+i);
	}
}
```


----------



## Marcinek (14. Nov 2010)

p ist doch eine zahl 3.4234234

Wenn du das weiter teilst, dann hast du ganz schnell 0.000 ... u.s.w.

Und da mit % kommst du nicht weit

In dem anderen posting steht afaik noch was dazu


----------



## JavaRookie21 (14. Nov 2010)

wie kann man denn nach int casten? hatte das noch nicht:S


----------

