tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
589
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    kreativmonkey 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
     

  2. #2
    Elmu 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.
     

  3. #3
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    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"

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    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.