Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-10-2004, 23:09   #1 (permalink)
Der Alte
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 208
Question Wie groß ist NaN?

Hallo, ich habe folgende Abfage gemacht

Code:
if (a >= 1)
	   ...
Wenn a vorher den Wert NaN hatte, so wird die Schleife durchlaufen!

Ich habe daraufhin folgende Tests gemacht:

Code:
trace(NaN >= 1); //true,           seltsam, entspricht aber siehe oben!

trace(NaN == 1); //false,          eigentlich klar.

trace(NaN > 1);  //undefined       müsste, wegen (NaN >= 1) == true, eigentlich true sein.
übrigens:

Code:
trace(undefined < 1); //true
Wer erklärt mir das bitte?

mfG
__________________
mfG

http://www.1ststeps.de
Billi_I ist offline   Mit Zitat antworten
Alt 11-10-2004, 00:58   #2 (permalink)
alien
 
Benutzerbild von Smirgel
 
Registriert seit: May 2002
Ort: Colonia
Beiträge: 7.597
nabend.
eine variable kann ein gewisser typ sein: string, nummer oder bool... gibts sonst noch was? (kann über trace(typeof(variable)) ausgegeben werden)
nan heist eigentlich nur "not a number" also "keine nummer".
richtig erklären kann ich dir deine ausgaben nicht.
aber ich versuchs mal:

trace(NaN >= 1); //true,
nan ist zwar keine nummer, aber es hat nen inhalt, sonst wäre es undefined. und somit ist nan true und damit auch >=1
(true -> 1, false ->0)

trace(NaN == 1); //false,
nan ist ja keine nummer also auch nicht 1

trace(NaN > 1); //undefined
da nan keine nummer ist, aber dadurch das es ja nicht undefined ist hat es ein wert (string oder was auch immer). aber da es keine nummer ist, kann nicht festgelegt werde, ob es größer als 1 ist. fest steht, das es einen wert enthält (sonst wäre es ja undefined) und somit true ist aber keine zahl zum vergleich ist.

bla="hallo" ergibt auch bla=true -> bla=nan

aber wenn "a" vorher nichts ist kannst du so fragen:

if(a) // also wenn "a" irgenwas ist, oder:
if(!a) wenn "a" nichts ist

trace(undefined < 1); //true
undefined ist nichts, also false enstpricht null und damit kleiner als 1. würde ich mal so sagen

korrigiert mich, wenn ich mist erzähle

grüße.
smirgel.
__________________
bei fragen, fragen.
Smirgel ist offline   Mit Zitat antworten
Alt 11-10-2004, 01:26   #3 (permalink)
Wer??? Ich???
 
Registriert seit: May 2003
Ort: München
Beiträge: 807
Zitat:
Zitat von Smirgel

korrigiert mich, wenn ich mist erzähle

grüße.
smirgel.
Man hätte es nicht besser Erklären können.

Cu
hOmId
Homid ist offline   Mit Zitat antworten
Alt 11-10-2004, 01:28   #4 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Ooopps!
Nan! Ist schon "number"
ActionScript:
  1. trace(typeof(NaN))//<--"number"
  2.  
NaN! Ist eine spezielle nummerische Kontsante die der Darstellung ungültiger nummerischen Daten dient!!
ActionScript:
  1. trace(NaN>=1)//muß ja größer oder gleich eins sein
  2.  
Da tracest ja eigentlich nur die Konstante, und die kann ja nicht null sein

Grüß Dich Smirgel
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"

Geändert von RustyCake (11-10-2004 um 01:52 Uhr)
RustyCake ist offline   Mit Zitat antworten
Alt 11-10-2004, 01:43   #5 (permalink)
alien
 
Benutzerbild von Smirgel
 
Registriert seit: May 2002
Ort: Colonia
Beiträge: 7.597
ich hätts ja ned so geschrieben wenn ich nicht auch gerne was dabei lernen würde
diese basics.... die liegen mir einfach ned.

@homid: dann hau dich mal ran

hi rusty.
__________________
bei fragen, fragen.
Smirgel ist offline   Mit Zitat antworten
Alt 11-10-2004, 09:59   #6 (permalink)
Der Alte
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 208
Hi, und danke für Eure Beiträge.

@Smirgel
Zitat:
Zitat von Smirgel
nan ist zwar keine nummer, aber es hat nen inhalt, sonst wäre es undefined. und somit ist nan true und damit auch >=1
Nach Deiner Theorie ist jeder Wert, der nicht undefiniert ist == true, also auch == 1, denn
trace(true == 1); //true
Das stimmt aber nicht, denn:
trace(NaN == true); //false
Zitat:
Zitat von Smirgel
if(a) // also wenn "a" irgenwas ist, oder:
if(!a) wenn "a" nichts ist
Der richtige Code, um den Schleifendurchlauf zu verhindern ist mir schon klar:
Code:
if (a>=1 && a != isNaN)
@Rusty
Zitat:
Da tracest ja eigentlich nur die Konstante, und die kann ja nicht null sein
Was immer es ist, was ich da trace, wenn es >= 1 und != 1 ist, muß es > 1 sein!


Ich versuche mal zusammenzufassen:

NaN ist vom Typ number, hat keinen gültigen Inhalt, lässt sich aber dennoch irgendwo (>=1) in die Zahlenreihe einordnen (sonst könnte kein Vergleich true werden).
Die Einordnung ( mit >; <; ==) scheitert aber, was nicht anders zu erwarten ist, da der Wert ja ungültig ist.

Also, verstanden hab ich das nicht!

mfG
__________________
mfG

http://www.1ststeps.de
Billi_I ist offline   Mit Zitat antworten
Alt 11-10-2004, 11:10   #7 (permalink)
Der Alte
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 208
Zitat:
Zitat von Billi_I
Code:
if (a>=1 && a != isNaN)
sorry, das war Blödsinn, richtig ist natürlich (hoffentlich):
Code:
if ( a>=1 && !isNaN(a))
Wenn man die Sachen nicht so häufig benutzt sollte man sie nicht aus dem Kopf zitieren!
Aber eigentlich ging es hier garnicht darum.
__________________
mfG

http://www.1ststeps.de
Billi_I 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 15:07 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele