Action Script-string zu Zahl
Ich habe ein problem mit der folgenden Anweisung
trace(Number("1/2")) //output NaN
aber
trace(Number("1.2")) //output 1.2
So, ich bin etwas verwirrt, warum die erste Aussage nicht gibt richtige Ergebnis?
das übergebene Objekt in den Konstruktor sollte direkt stellen eine double-precision-floating-point-Zahl.
InformationsquelleAutor sameer jain | 2012-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es wahrscheinlich erwartet, dass der Wert eine Zahl sein, die bereits, nicht eine Berechnung. Versuchen Sie zu analysieren, diese Zeichenfolge:
"1+2"
. Es wird höchstwahrscheinlich in NaN sowie.Edit: ich habe einen test
So, wie ich sagte, die
Number()
Konstruktor erwartet eine Zahl, nicht eine Berechnung.InformationsquelleAutor Tim S.
Können Sie konvertieren von Zeichenfolgen, die aus numerischen Zeichen in tatsächlichen Anzahl von Daten mithilfe der Number(). Die Weise, die es funktioniert, ist, dass Sie übergeben Sie die Zeichenfolge Wert der Zahl(), und dies wiederum bringt eine Reihe version der Zeichenfolge, die an es übergeben wurde.
NaN ist die Ausgabe, weil Sie versuchen, konvertieren Sie die String-Daten verwendet werden, die als Anzahl von Daten.
Haben Sie zu verfolgen, wie diese da " /" - operator ist keine Zahl.
Kann man nur zu multiplizieren oder zu dividieren zahlen, NICHT mit strings. Also in der Tat versuchen, dividieren String-Daten, die wir implizit die Nötigung die Werte zu ändern in die Anzahl der Daten. Das können wir nicht machen. Wir sollten explizit konvertieren Sie die String-Daten in numerische Daten zuerst, und dann führen die arithmetische operation.
Number ()
ist kein Konstruktor, sondern eine top-level-Konvertierung-Funktion help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/... , und b) ist es sicherer und genauer zu bedienenparseFloat()
oderparseInt()
zum konvertieren von strings in numerische Werte (analysiert den string bis zur ersten nicht-numerischen Zeichen, und gibt immer NaN, wenn der string nicht umgewandelt werden kann - überprüfen Sie die Tabelle fürNumber()
's möglich, die Werte zurückgeben, um zu sehen, was ich meine).danke für die Korrektur mich. ich habe geändert meine Antwort als Zahl() ist kein Konstruktor.
InformationsquelleAutor Swati Singh
Werden, indem man den Wert in Anführungszeichen parks sind Sie, dass es eine explizite Zeichenfolge.
Es ist wie zu Fragen, was ist die Zahl Wert des Wortes "dieses".
Nicht sicher, ob das hilft, aber entfernen Sie die Anführungszeichen und es macht Sinn.
Ist Ihre Eingabe immer das gleiche format? d.h. ein Bruchteil? So könnten Sie analysiert die Zeichenfolge, das Zeichen bekommen, bevor der / und die Dateien nach " / " und führen Sie dann die Berechnung auf diejenigen Teilstrings. z.B. var str:String = "1"; var str2:String = "2"; trace(Number(str) / Anzahl(str2)); //Ausgabe 0.5
InformationsquelleAutor crooksy88