double problem?

Status
Nicht offen für weitere Antworten.

nikisback

Mitglied
Moin, es ist mir eigentlich schon peinlich mein Problem zu posten, aber ich finde den Fehler einfach nicht.

Ist ein ganz einfacher Teil eines Programms von mir, aber ich weiß nicht was da falsch ist :(

Code:
		 	double x01;
	        x01 = -200;
	        double y;

	        while(x01 <= 200) {

	            x01 = x01 + 0.1;
	            y = x01 * x01;
	            
	            if(y == 0 ) {
	            	
	                System.out.println(x01);
	            }
	        }


allerding geht jedoch

Code:
		 	double x01;
	        x01 = -200;
	        double y;

	        while(x01 <= 200) {

	            x01 = x01 + 0.5;
	            y = x01 * x01;
	            
	            if(y == 0 ) {
	            	
	                System.out.println(x01);
	            }
	        }

und es muss noch viel genauer werden, am besten x01 = x01 +0.00000001

schonmal danke im Vorraus, für eure antworten[/code]
 

Murray

Top Contributor
Was geht nicht? Kommt die Ausgabe nicht? Das wird daran liegen, dass die 0 nicht exakt erreicht wird. Lass Dir doch mal in jeden Schleifendurchlauf y ausgeben.
 

nikisback

Mitglied
jop, die Ausgabe kommt nicht.

Naja, also rein mathematisch gesehen, sollte da schon irgendwann 0 rauskommen bei x01 = x01 + 0.1

Was mich irritiert, ist, dass das erste ausgegeben ergebnis "477.1000000001759" ist für x01.
Code:
        double x01;
        x01 = -200;
        double y;
        double ink = 0.00000001;

        while(x01 <= 200.00000000) {

            x01 = x01 + ink;
            y = x01 * x01;

            if( ( y >= (0 - 0.1 ) && (y <= (0 + 0.1)))){
                String xt = String.valueOf(x01);
                System.out.println(x01);
            }
        }

Das manchmal 0 nicht rauskommt, ist sogar sehr wahrscheinlich, bei funktionen höheren Grades, deshalb habe ich den code etwas umgeschrieben.

Allerdings bekomme ich jetzt Werte wie -0.30436999971069195 ausgegeben und das befindet sich ja eindeutig nicht im angegebenen Bereich, weiß da jemand weiter?

Oder ist es möglich, dass java arithmetisch nicht genau genug rechnet, weil ich verschiedene Werte ausprobiert und je kleiner diese Werte sind, desto näher an die 0-Stelle komme ich, allerdings bleibe ich meistens 2 nachkommastellen von meiner Einschränkung entfernt.
 

0x7F800000

Top Contributor
nikisback hat gesagt.:
Allerdings bekomme ich jetzt Werte wie -0.30436999971069195 ausgegeben und das befindet sich ja eindeutig nicht im angegebenen Bereich, weiß da jemand weiter?
wieso befindet sich das nicht in dem bereich?
0.30436999971069195^2 = 0.0926410967 < 0.1
:roll:
Oder ist es möglich, dass java arithmetisch nicht genau genug rechnet, weil ich verschiedene Werte ausprobiert und je kleiner diese Werte sind, desto näher an die 0-Stelle komme ich, allerdings bleibe ich meistens 2 nachkommastellen von meiner Einschränkung entfernt.
java rechnet nicht. java greift auf native methoden zu, für diese rechenfehler ist die Funktionsweise des Rechners verantwortlich. Alle rechner heutzutage sind so aufgebaut, dass die mit abbrechenden binärbrüchen rechnen. 1/2 kannst du gut darstellen. 1/4 kannst du darstellen. 17/256 kannst du auch gut darstellen. 1/5 kannst du niemals als einen abbrechenden binärbruch darstellen, ebensowenig 1/10 oder 0.000001 , da kommt es automatisch zu rundungfehlern bei der darstellung.

Außerdem verstehe ich nicht so recht, was dein problem ist. Hast du am ende gehofft die schrittweite auf ein "infinitesimales dx" zu setzen, und dann in einer schleife rein zufällig auf irrationale Nullstelen wie etwa die wurzel aus 2 zu treffen oder was^^ Ob's dann genau oder ungenau rechnet, solange du bei rationalen zahlen bleibst, kannst du doch die nullstelle gar nicht erwischen, musst also eh nach treffern in irgendeinem intervall suchen.

Ferner sollte man wohl noch dazusagen, dass diese methode zur nullstellensuche mit abstand die langsamste und ungenaueste ist, die man sich ausdenken könnte, sieh' dir doch bitte zumindest mal das an, bevor du hier weitermachst.
 

nikisback

Mitglied
hm...ich wollte wohl ab 22:00 nicht mehr posten, sonst kommt zu viel Müll raus, wie man sieht :oops:

aber vielen dank für den Link, das hilft mir schon viel weiter
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
T Problem mit double-Formatierung Java Basics - Anfänger-Themen 3
A Scanner Double Problem Java Basics - Anfänger-Themen 4
B Problem mit double in einer Funktion Java Basics - Anfänger-Themen 4
D Problem mit Nachkommastellen <%=Double.valueOf(35/1000)%> ergibt 0.0? Java Basics - Anfänger-Themen 3
N Problem mit Double Wert Java Basics - Anfänger-Themen 2
G Problem mit Double <-> double Java Basics - Anfänger-Themen 4
B double NaN Problem (unglaublich) Java Basics - Anfänger-Themen 4
X Bruch Problem (int/double) Java Basics - Anfänger-Themen 3
K zufallszahlen int / double, gerade / ungerade problem . Java Basics - Anfänger-Themen 2
P Problem mit double buffering Java Basics - Anfänger-Themen 9
R Tabelle sortieren, Problem mit Double bzw. String-Werten Java Basics - Anfänger-Themen 5
G Problem mit einfacher For-Schleife und Double Wert Java Basics - Anfänger-Themen 4
F Ganz simples Problem: Kovertieren von Double zu Integer Java Basics - Anfänger-Themen 2
S Spinnt der o_O - Problem mit double Java Basics - Anfänger-Themen 2
B Problem mit Potenzen/ Double/ Bestimmung der Eulerzahl Java Basics - Anfänger-Themen 2
W Double or Float zusammenrechnen Java Basics - Anfänger-Themen 15
I Review von euch erwünscht, double Rechnung falsch Java Basics - Anfänger-Themen 34
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
krgewb Double mit zwei Nachkommastellen Java Basics - Anfänger-Themen 2
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
Lion.King Fehler in double und int Java Basics - Anfänger-Themen 7
F java: incompatible types: possible lossy conversion from double to int Java Basics - Anfänger-Themen 1
J Double Variable und Addition Java Basics - Anfänger-Themen 2
F Double Ausgabe nicht wissenschaftlich Java Basics - Anfänger-Themen 16
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
Kotelettklopfer Variablen Double zwingen Ganzzahlen mit 2 Nachkommastellen auszugeben Java Basics - Anfänger-Themen 10
A possible lossy conversion from double to int Java Basics - Anfänger-Themen 5
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
N The method setSaldo(double) in the type Konto is not applicable for the arguments (int, int) Java Basics - Anfänger-Themen 2
C Konvertierung des int typs in den double typ für die Ausgabe mit Nachkommastellen Java Basics - Anfänger-Themen 4
V Erste Schritte Die Nuller bei double NICHT abschneiden Java Basics - Anfänger-Themen 4
Y Datentypen Double Division ungenau Java Basics - Anfänger-Themen 45
L Datentypen Rechnen und abrunden mit double Java Basics - Anfänger-Themen 7
M Writer für unterschiedliche Obj/inbt/double erstellen? Java Basics - Anfänger-Themen 1
F Character umwandeln als Double Werte Java Basics - Anfänger-Themen 8
M Double Wert nach n abschneiden ohne zu runden Java Basics - Anfänger-Themen 1
D Methode mit Übergabe double und Rückgabe String Java Basics - Anfänger-Themen 2
P Hilfe bei Double Java Basics - Anfänger-Themen 1
B Rückgabe von zwei Werten: String und double Java Basics - Anfänger-Themen 14
B HQL / Hibernate, GroupBy und Ausgabe als Double Java Basics - Anfänger-Themen 1
M Konvertierung String -> double Java Basics - Anfänger-Themen 8
A Double Scan eingrenzen Java Basics - Anfänger-Themen 2
O Erste Schritte Potenzmethode per double Java Basics - Anfänger-Themen 11
A Random Double mit Math.round() runden? Java Basics - Anfänger-Themen 1
H Double oder nicht? Java Basics - Anfänger-Themen 7
J int array als double array ausgeben Java Basics - Anfänger-Themen 9
M Int und Double in Array speichern Java Basics - Anfänger-Themen 1
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
B Hashing (verkettet/double) Java Basics - Anfänger-Themen 0
L Konvertieren von String zu double?! Java Basics - Anfänger-Themen 6
V Operatoren Warum kommt bei double bei den Nachkommastellen irgendwann eine 2?! (1.20000000000002) Java Basics - Anfänger-Themen 5
geekex Double zu String umwandeln in einer Methode Java Basics - Anfänger-Themen 28
E Bruch erstellen - Von Int zu Double Ergebnis Java Basics - Anfänger-Themen 24
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
I Double.ParseDouble 2 Textfelder Java Basics - Anfänger-Themen 1
M JComboBox feste double Werte zu ordnen Java Basics - Anfänger-Themen 8
P Datentypen Kann ich bei double Komma statt Punkt eingeben? Java Basics - Anfänger-Themen 14
E Von Double zu Long umwandeln Java Basics - Anfänger-Themen 9
L Bei falscher Eingabe soll NaN zurückgegeben werden, Rückgabetyp jedoch double Java Basics - Anfänger-Themen 3
V Variablen Double später deklarieren Java Basics - Anfänger-Themen 7
V double = 1.34823e-300 Java Basics - Anfänger-Themen 5
W double*double error Java Basics - Anfänger-Themen 4
kilopack15 Mehr Nachkommastellen mit double Java Basics - Anfänger-Themen 14
T Input/Output Double und String als Eingabe einlesen Java Basics - Anfänger-Themen 9
J [Rundungsfehler bei Double] Grundkurs Java: Checke Lösungsweg nicht Java Basics - Anfänger-Themen 1
W In einer Function<Double, Double> undefinierte Rechenoperationen abfangen? Java Basics - Anfänger-Themen 3
T set Metode für Double Java Basics - Anfänger-Themen 6
Hijo2006 String to Double Java Basics - Anfänger-Themen 4
K Double Wert runden und in Int umwandeln Java Basics - Anfänger-Themen 7
A Kommafehler beim double einleseen korrigieren Java Basics - Anfänger-Themen 2
K Operatoren The Operator * is undefined for the argument type(s) double, String Java Basics - Anfänger-Themen 4
das_leon String zu double konventieren Java Basics - Anfänger-Themen 1
K Genauer als Double? Java Basics - Anfänger-Themen 4
T Double.parseDouble(args[0]) Java Basics - Anfänger-Themen 13
A Java Ungenauigkeit double Java Basics - Anfänger-Themen 6
B Methoden The method mirror(double[]) in the type Convolution is not applicable for the arguments (double) Java Basics - Anfänger-Themen 8
C Typumwandlung von int<-->double Java Basics - Anfänger-Themen 6
M Double Wert auf 2 Kommastellen runden Java Basics - Anfänger-Themen 2
S Regelabfragen aus Double-Array Java Basics - Anfänger-Themen 2
A Erste Schritte Double Wert aus String zu int Java Basics - Anfänger-Themen 2
P Rückgabe erflogt nicht als Double Java Basics - Anfänger-Themen 2
K Erste Schritte switch - Warum sind long/float/double/... nicht erlaubt? Java Basics - Anfänger-Themen 5
P scanner ein Double einlesen Java Basics - Anfänger-Themen 10
T Java double berechnung fehler Java Basics - Anfänger-Themen 2
S double[x] , double[y] zu Point[] points kopieren? Java Basics - Anfänger-Themen 15
G double in float umwandeln Java Basics - Anfänger-Themen 2
F double[] an andere Methode übergeben Java Basics - Anfänger-Themen 1
B Datentypen Test float und double speichern Zahlen nur ungefähr Java Basics - Anfänger-Themen 4
S Datentypen double - kommastellen abschneiden Java Basics - Anfänger-Themen 6
M int double int double Graph Java Basics - Anfänger-Themen 3
K ArrayList<Double> --> double[] array Java Basics - Anfänger-Themen 5
Z Double in komma und Punkt akzeptieren -> Robusteeingabe Java Basics - Anfänger-Themen 7
S Double und Gleitkommazahlen mit JUnit testen Java Basics - Anfänger-Themen 7
B Datentypen Multiplzieren mit double wird ungenau Java Basics - Anfänger-Themen 4
K Von einem Double wert nur die Zahl vor dem Komma verwenden Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben