Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-12-2004, 14:21   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Ort: Gelsenkirchen
Beiträge: 35
Addition

Hi!
Ich möchte in einem MC zu einem Wert von 250 ein Produkt addieren.
Das Produkt setzt sich zusammen aus einer konstanten Wert [0.002] und einem Faktor von 0 bis 100.
100 * 0.002 sind 0.2 und wenn ich 250 mit diesem Wert ständig addiere, dann kann ich ja eigentlich nur Werte von *.0, *.2, *.4, *.6, *.8 erreichen.
Wie kann es sein, dass ich, wenn ich bei ungefähr 258 angekommen bin, plötzlich einen Wert von 258.599999999999 habe? Wie kommt es zu dieser gringen Abweichung?

Die Formel sieht so aus: x = x + (a * b);

mfg Homersektor7g
Homersektor7g ist offline   Mit Zitat antworten
Alt 06-12-2004, 15:41   #2 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Zitat:
Zitat von Homersektor7g
.....
Wie kann es sein, dass ich, wenn ich bei ungefähr 258 angekommen bin, plötzlich einen Wert von 258.599999999999 habe? Wie kommt es zu dieser gringen Abweichung?
....
Eine Abweichung in dieser Grössenordnung solltest Du schon wesentlich früher haben:
Rechenfehler in Flash?
Gruß

Alois

Edit: aaah so, Du beginnst erst ab 250 die Fliesskommazahlen zu addieren....
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (06-12-2004 um 15:42 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 06-12-2004, 21:16   #3 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Ort: Gelsenkirchen
Beiträge: 35
Erstmal danke für den Hinweis!
Aber wie umgehe ich das nun? Ich kann das leider nicht anders lösen.
Die 250 entsprechen bei mir einer Energiemenge in einem Clip, den ich für ein Projekt in der Schule mache. ich addiere dazu eine Energiemenge, die abhängig ist von dem Faktor 100, welcher einen Ventilhub darstellt. Je größer der Hub, desto größer die Zugeführte Energiemenge in die bereits bestehende.

Was kann man da machen?

mfg Homersektor7g
Homersektor7g ist offline   Mit Zitat antworten
Alt 07-12-2004, 17:49   #4 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Ich versteh nicht ganz warum dieser Rundungsfehler bei der gegebenen Aufgabenstellung ein Problem darstellt, aber nun gut, es gibt 3 grundsätzliche Lösungswege:
- Du rechnest das Gesamtergebnis immer in einer Formel aus (das funktioniert aber nur, wenn 'a' während eines Durchlaufs gleichbleibt):
ActionScript:
  1. x=250;
  2. b=0.002;
  3. a=random(100);//oder halt irgendein Wert zwischen 1 und 100
  4. for(var i=0;i<100;i++){
  5. x_anzeige=x+i*a*b;
  6. trace(x_anzeige);
  7. }
-Du rechenst einfach intern 1000-fach höher:
ActionScript:
  1. x=250000;//250*1000
  2. b=2//0.002*1000
  3. a=random(100);//oder halt irgendein Wert zwischen 1 und 100
  4. for(var i=0;i<100;i++){
  5. x = x + (a * b);
  6. x_anzeige=x/1000;
  7. trace(x_anzeige);
  8. }
- Du rundest das Ergebnis nach der Berechnung an entsprechender Stelle:
ActionScript:
  1. x=250;
  2. b=0.002;
  3. a=random(100);//oder halt irgendein Wert zwischen 1 und 100
  4. for(var i=0;i<100;i++){
  5. x=Math.round((x+a*b)*1000)/1000;
  6. trace(x);
  7. };

Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois 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 06:06 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele