BigDecimal Schleifen

birti

Mitglied
hallo!
ich hab schon wieder ein Problem, ich hab was mit big decimal programmiert und das ding reagiert nicht auf meine schleifen nicht auf eine for-schleife und auch nicht auf meine do while schleife woran liegt das denn??? sind die abbruchbedingungen da anders oder muss ich sonst irgendwas beachten???

danke

LG birte
 

birti

Mitglied
du wolltest es so ;)

Java:
package bdwu;

import java.math.BigDecimal;

public class bdWurzel {

	
	public static void main(String[] args) {
		BigDecimal n = BigDecimal.valueOf(0L);
		//BigDecimal f = BigDecimal.valueOf(0.0000000000000000000001);
		BigDecimal a = BigDecimal.valueOf(0L);
		BigDecimal c = BigDecimal.valueOf(0L);
		BigDecimal d = BigDecimal.valueOf(0L);
		BigDecimal e = BigDecimal.valueOf(0L);
		BigDecimal z = BigDecimal.valueOf(49L);
		BigDecimal y = BigDecimal.valueOf(2L);
		int bedingung2 =0;
		//int i=0;
		int k=0;
	
		
				/*System.out.println("Es wird die Wurzel aus 49 gezogen");
				
				if(z==n)
				{
					System.out.println("Ergebnis: 0");
				}
				else
				{*/
				 c = z;
				 e = z;

				do
				
				 {	
								BigDecimal rechnung1=BigDecimal.valueOf(0L);
								BigDecimal rechnung2=BigDecimal.valueOf(0L);
								BigDecimal rechnung3=BigDecimal.valueOf(0L);
					rechnung1=z.divide(e);
					rechnung2=e.add(rechnung1);
					rechnung3=rechnung2.divide(y);
					d=rechnung3;
						k++;
								System.out.println("Zwischenergebnis: "+d);
					a=d;
					c=e;
								System.out.println("E Alt"+e);
					e=d;
								System.out.println("E Neu"+e);
								BigDecimal bedingung1 = BigDecimal.valueOf(0L);
								BigDecimal f = BigDecimal.valueOf(0.01);
					bedingung1=c.subtract(a);
								System.out.println("c-a        "+bedingung1);
					bedingung2=bedingung1.compareTo(f);
								System.out.println("Bedingung2      "+bedingung2);
				}
				while(bedingung2!=1);
				{
				System.out.println("Ergebnis:"+a);
				System.out.println("Anzahl der Durchlaeufe:"+k);
				}
			}
		}
	//}
 
Zuletzt bearbeitet von einem Moderator:

birti

Mitglied
Was passiert:
einmal wird es ausgeführt also ist k=1 ich nehme an: das do wird ausgeführt aber die While Bedingung wird mal knallhart ignoriert!

Was es machen soll:
es soll d=(e+(z/e))/2 das ist das da:
BigDecimal rechnung1=BigDecimal.valueOf(0L);
BigDecimal rechnung2=BigDecimal.valueOf(0L);
BigDecimal rechnung3=BigDecimal.valueOf(0L);
rechnung1=z.divide(e);
rechnung2=e.add(rechnung1);
rechnung3=rechnung2.divide(y);
d=rechnung3;
k++;
System.out.println("Zwischenergebnis: "+d);
a=d;
c=e;
System.out.println("E Alt"+e);
e=d;
System.out.println("E Neu"+e);

solange ausführen wie c-a>0.0...1 ist:


BigDecimal bedingung1 = BigDecimal.valueOf(0L);
BigDecimal f = BigDecimal.valueOf(0.01);
bedingung1=c.subtract(a);
System.out.println("c-a "+bedingung1);
bedingung2=bedingung1.compareTo(f);
System.out.println("Bedingung2 "+bedingung2);
}
while(bedingung2!=1);
 
G

Gast2

Gast
BigDecimals kannst du nicht mit == und != vergleichen. Da musst du schon mit equals() ran

EDIT:// seh grade das bedinung2 ein int ist... ok, dann noch mal in Ruhe gucken. Aber ich würde das alles etwas sprechner benennen und nicht einmal bedingung1 = BigDecimal und einmal bedingung2 = int verwenden...
 
Zuletzt bearbeitet von einem Moderator:

birti

Mitglied
aber bedingung2 und 1 sind doch int warum kann ich dann die beiden nicht mit == oder != abprüfen ???
ich versteh das nicht... wirklich ich würde auch gerne als bedingung schreiben das:c-a>f (das sind alles bigdecimal's) das geht aber auch nich, mir fehlt gerade absolut das verständnis und ich wäre froh über einen wirklich großen anstoß in die richtige richtung
 

eRaaaa

Top Contributor
Verstehe das Problem noch nicht richtig?
do-while heißt, der Rumpf wird auf jeden Fall 1 x ausgeführt. Nun wird dort halt irgendwas gerechnet im Rumpf, die compareTo liefert 1, somit steht in bedingung2 = 1...und die Schleifenbedingung
Code:
bedingung2 != 1
liefert false (sie ist ja == 1 !) , demnach wird sie halt nicht nochmal ausgeführt? (while bedingung2 != 1 --> solange bedingung2 != 1 )
Ausgabe:
Code:
Zwischenergebnis: 25
E Alt49
E Neu25
c-a        24
Bedingung2      1
Ergebnis:25
Anzahl der Durchlaeufe:1

Was hat das jetzt mit BigDecimal zu tun, bzw. was genau ist das Problem ?!
 

birti

Mitglied
ich habs jetzt, die bedingung2 ist wie du sagtes nicht richtig aber ich hatte mit der richtigen bedingung immer einen Fehler mit divide und jetzt hab ich eine spektakuläre Entdeckung gemacht... aufgepasst:

rechnung1=z.divide(e, 100, RoundingMode.HALF_UP);
rechnung2=e.add(rechnung1);
rechnung3=rechnung2.divide(y,100,RoundingMode.HALF_UP);

das hat gefehlt und jetz klappts einwandfrei:toll: die while bedingung hab ich dann wieder "richtig gemacht"

trotzdem ein riesen DANKESCHÖN für eure Hilfe, ihr seid super:applaus:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Robertop BigDecimal ergänzt unnötige 0 am Ende Allgemeine Java-Themen 6
M Probleme mit BigDecimal Allgemeine Java-Themen 1
ARadauer Checksumme über BigDecimal Werte Allgemeine Java-Themen 11
M float, double, BigDecimal Allgemeine Java-Themen 5
A Ungünstige BigDecimal-Klasse Allgemeine Java-Themen 44
ARadauer BigDecimal und Not a Number Allgemeine Java-Themen 4
R BigDecimal, Position des Kommas Allgemeine Java-Themen 2
J Umstellung von double auf BigDecimal Allgemeine Java-Themen 5
F BigDecimal devide Allgemeine Java-Themen 5
S wiedermal ein kleines Problem mit BigDecimal Allgemeine Java-Themen 5
J BigInteger und BigDecimal im Eclipse-Debugger Allgemeine Java-Themen 3
hdi Probleme beim Rechnen mit BigDecimal Allgemeine Java-Themen 5
N BigDecimal falsch formatiert bei Locale.GERMANY Allgemeine Java-Themen 3
S String to BigDecimal Allgemeine Java-Themen 6
N BigDecimal.divide Problem Allgemeine Java-Themen 6
N setscale bigdecimal Allgemeine Java-Themen 3
M String to BigDecimal Allgemeine Java-Themen 7
N BigDecimal formatieren Allgemeine Java-Themen 2
André Uhres BigDecimal in HashSet eingefügt, aber nicht in TreeSet Allgemeine Java-Themen 2
G BigDecimal Rundet falsche Allgemeine Java-Themen 4
T bigdecimal.pow(0.5) Allgemeine Java-Themen 19
0 Keine clone-Methode für BigDecimal und BigInteger? Allgemeine Java-Themen 3
F KI / Machine Learning Parameter verschachtelte for Schleifen Allgemeine Java-Themen 2
F KI / Machine Learning Parameter verschachtelte for Schleifen Allgemeine Java-Themen 1
A Mehrere for-Schleifen Allgemeine Java-Themen 2
Monokuma Foreach Schleifen in Streams umändern Allgemeine Java-Themen 23
Junger_Basileus Attribute, Arrays, Schleifen Allgemeine Java-Themen 9
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
C Schachbrett mit while-schleifen Allgemeine Java-Themen 7
P Erste Schritte Dynamische Anzahl von verschachtelten Schleifen Allgemeine Java-Themen 5
R kann man irgendwie mit Arrays mit Eingabefenstern und Schleifen Werte abklappern? Allgemeine Java-Themen 2
R n verschachtelte Schleifen? Allgemeine Java-Themen 14
S Welcher Schleifen type für eine Berechnung Allgemeine Java-Themen 7
R Schleifen Allgemeine Java-Themen 11
L for-Schleifen Zählfehler Allgemeine Java-Themen 6
G Code nach Schleifen und Verzweigungen durchsuchen Allgemeine Java-Themen 6
S verzweigungen und schleifen Allgemeine Java-Themen 24
prakdi Zeit zum Durchlauf der Schleifen unverständlich!? Allgemeine Java-Themen 3
B Auslagerung von verschachtelten Schleifen Allgemeine Java-Themen 11
T Verschachtelte Schleifen abbrechen Allgemeine Java-Themen 3
Meldanor For-Schleifen - byte statt int? Allgemeine Java-Themen 11
S Verschachtelte Schleifen Allgemeine Java-Themen 9
Z GC -> Allokation in Schleifen Allgemeine Java-Themen 25
A Fibonacci-Zahlen & kopfgesteuerte Schleifen & Strukt Allgemeine Java-Themen 8
V Vererbung und Schleifen Allgemeine Java-Themen 5
W kompliziertes Konstrukt von Schleifen/If/else. Rekursion? Allgemeine Java-Themen 22
S schleifen Allgemeine Java-Themen 3
A Schleifen in Ant? Allgemeine Java-Themen 5
G Methode mit Schleifen NullPointerException Allgemeine Java-Themen 2
L Schleife über Schleifen Allgemeine Java-Themen 4
M Verschachtelte Schleifen (unbekannte Tiefe) Allgemeine Java-Themen 3
N Code verkürzen(mit schleifen)? Allgemeine Java-Themen 10
C Effektivitaet bei for Schleifen Allgemeine Java-Themen 18
C Performance von FOR Schleifen Allgemeine Java-Themen 25
R Lohnt sich byte und short bei Schleifen? Allgemeine Java-Themen 9
P Schleifen liefern Werte nicht wie erwartet Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben