ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
589
589
EMPFEHLEN
-
10.09.10 07:56 #1kreativmonkey Tutorials.de Gastzugang
Servus,
Vor einer woche habe ich angefangen das Buch "Einstieg in java 6" von Galileocomputing zu lesen, ich bin nun fast am ende und kann es einfach nicht mehr abwarten etwas zu programmieren. Durch ein paar beispielaufgaben kam ich auf die idee ein beispiel zur berechnung von vektoren so umzuschreiben das es mir einheitsvektoren such. Ich wollte mich an diese problemlösung schritt für schritt rantasten und habe gleich beim ersten schritt einen fehler den ich nicht lokalisieren kann.
Quellcode: http://pastebin.com/500QSzvG
Das ergebnis aus der rechnung wo auf jedefall 1 raus kommen muss lautet 1.000000007 was absolut keinen sin ergibt. Ich weiß das es rechenungenauigkeiten gibt aber das diese so groß sind schokiert mich ein wenig. Eine lösund dafür müsste es doch geben...
Schonmal vielen dank,
Kreativmonkey
-
10.09.10 08:19 #2Elmu Tutorials.de Gastzugang
Hier liegt kein Fehler vor.
Es liegt daran, dass Double-Werte nie exakt sind. Findet man eigentlich sogut wie bei jeder Zahl.
Dazu einfach mal hier vorbei schauen: http://de.wikipedia.org/wiki/Gleitko...Digitaltechnik
Was du machen kannst, ist abrunden, Zahl abschneiden oder Genauigkeit erhöhen. Wobei letzteres Unsinn wäre und man immer noch eventuell am Ende Ungenauigkeiten hat.
-
10.09.10 09:07 #3
- Registriert seit
- Jun 2007
- Ort
- Passau (Niederbayern)
- Beiträge
- 1.394
Hallo,
das mit den Rechenungenauigkeiten stimmt schon so. Dies liegt damit zusammen, wie ein Computer die Zahlen speichert und ist hier genauer beschrieben.
Gruß
BKÜber eine gute Bewertung freut sich jeder ;)
Bitte erledigte Threads als "Erledigt" markieren.
"Though a program be but three lines long, someday it will have to be maintained.''
-- Geoffrey James, "The Tao of Programming"
-
10.09.10 10:34 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Man kann statt double die java.lang.Bignum Klasse verwenden wo man eine beliebige Genauigkeit verwenden kann.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.





Zitieren
Login





