Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-08-2008, 09:57   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2008
Beiträge: 22
Was tun gegen ungenaue Variablen bei Flash?

Also... ich hab ein Problem:

Ich schreibe gerade ein ActionScript, in dem ziemlich viel Mathematik vorkommt.

Da hab ich einen Ausdruck von der Form if(a-b==c) drin stehen, der lieferte dauernd "false" zurück, obwohl einwandfrei klar war, daß a-b=c ist.

So. Okay. Ich versuchs mal mit "trace(a-b-c);", und was krieg ich raus?

4.44089209850063e-16.


Na toll. Folgerung: ActionScript kann nicht gescheit mit Variablen umgehen.
Was tut man dagegen?
Markus1982 ist offline   Mit Zitat antworten
Alt 23-08-2008, 10:09   #2 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Na ja das hat nicht zwingend nur was mit AS zu tun

Musst im Grunde bei sowas immer so vorgehen:
ActionScript:
  1. a-b-c < ε

Dabei ist Epsilon möglichst klein.

Also wenn z.B.
ActionScript:
  1. a-b-c < 0.0001
ist, kannst du davon ausgehen, dass es gleich ist.

Gab es aber schon mehrfach, daher gehe ich hier auch nicht auf die genauen
Hintergründe ein. Für mehr Details die Suche benutzen.

gruß
sebastian ist offline   Mit Zitat antworten
Alt 23-08-2008, 10:29   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2008
Beiträge: 22
alles klar, danke schön.
Markus1982 ist offline   Mit Zitat antworten
Alt 23-08-2008, 11:53   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
Zitat:
Zitat von Markus1982 Beitrag anzeigen
Na toll. Folgerung: ActionScript kann nicht gescheit mit Variablen umgehen.
sorry da muss ich wiedersprechen! nicht flash kann nicht, sondern du kannst nicht richtig damit umgeben.
die berechnungen werden nicht von flash ausgeführt, sondern vom prozessor. das was du als fehler bezeichnest ist ein vollkommen normales ergebnis, wenn man das zahlensystem wechselt (dezimal für den menschen in dual für den computer) und zur darstellung der zahlen nur ein begrenzer platz zur verfügung steht. also wenn das überhaupt ein fehler wäre, dann betrifft der alle computer und alle programmiersprachen.
siehe:
http://de.wikipedia.org/wiki/IEEE_754

wenn man richtig programmiert, dann ergibt das auch das richtige ergebnis.
schreib doch bitte einmal 1/7 als dezimale zahl auf und zwar exakt! und mach da mal blos keinen fehler ;-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (23-08-2008 um 11:54 Uhr)
hgseib ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele