Tuesday 12 September 2017

Parseint Radix Binary Options


JavaScript Tutorial Number, Math Alle Zahlen in JavaScript, sowohl Integer als auch Gleitkomma, sind vom Typ Number. Intern wird eine Zahl durch das Gleitkommaformat IEEE 754, auch 8220double precision8221 genannt, dargestellt. Es gibt 8 Byte pro Zahl. Der maximale Integerwert ist etwa 2 53. Schriftform In Javascript ist es möglich, Zahlen mit hexadimalem oder oktalem Radix zu schreiben: Es steht auch eine so genannte wissenschaftliche Form zur Verfügung, sie besteht aus einer Zahl gefolgt von 8220e8221 und einer Anzahl von Nullen. Beispielsweise ist 1e3 1 mit 3 Nullen, effektiv 1000. Wenn die Menge der Nullen negativ ist, dann wird die Zahl über den Dezimalpunkt hinaus verschoben. Zero Division, Infinity Stellen Sie sich vor, Sie sollen eine neue Sprache erstellen. Die Leute nennen es 8220JavaScript8221 (oder LiveScript, was auch immer). Was sollte passieren, wenn jemand durch Null teilt? In der Regel ist die Antwort 8220Zero Division Error8221. Zumindest für die meisten Programmiersprachen ist es so. Aber JavaScript-Entwickler beschlossen, mehr mathematischen Weg gehen. In Mathe, wenn Sie durch 0 teilen, erhalten Sie Infinity (oder - Infinity). Gleiches in JavaScript: Infinity ist ein spezieller numerischer Wert in JavaScript und verhält sich wie es sollte. Infinity ist größer als jede andere Zahl. Hinzufügen alles, was Infinity doesn8217t es ändern: So gibt es keinen Fehler, nur Unendlichkeit. Wenn eine mathematische Operation durchgeführt werden kann, gibt sie einen speziellen pseudo-numerischen Wert zurück: NaN (Not-A-Number). Zum Beispiel ist die Division von null durch null nicht im mathematischen Sinne definiert, also gibt sie NaN zurück. NaN hat folgende Eigenschaften: NaN ist nicht gleich. Einschließlich sich selbst. Der folgende Code ist still: NaN kann nur von isNaN überprüft werden - eine spezielle Funktion, die für NaN und false für jeden anderen Wert true ergibt. NaN ist klebrig. Jede mathematische Operation mit NaN ergibt NaN. Mathematische Operationen can8217t führen zu einem Fehler oder Absturz in JavaScript. Schlimmstenfalls wird NaN zurückgegeben. Umwandlung in eine Zahl Die strikte Umsetzung kann getan werden durch 82208221 Die Zeichenfolge wird analysiert und wenn das Format numerisch ist, wird die Zahl zurückgegeben. Tatsächlich sind alle mathematischen Funktionen binary plus Konvertieren einer Zeichenfolge in Anzahl: Parsing in eine Zahl ignoriert whitespaces am Anfang und am Ende. Zum Beispiel: Wenn der Wert can8217t in eine Zahl konvertiert werden kann, gibt die Operation NaN zurück: isNaN konvertiert das Argument it8217s in eine Zahl automatisch. So kann es verwendet werden, um zu überprüfen, ob ein String eine Zahl darstellt: Aber bitte seien Sie vorsichtig, weil ein String mit Whitespaces in 0 konvertiert wird: Und natürlich isNaN won8217t für andere Typen arbeiten, da false, null undefined auch konvertiert werden Auf 0 gesetzt. Tatsächlich ist die zuverlässigste Konvertierungsprüfung entweder ein regexp oder isNumeric unten: isNumeric überprüft korrekt die Numerizität für alle Eingabetypen. Machen Sie eine Schnittstelle für die Eingabe von zwei Nummern und dann Alarm ihre Summe. Es sollte wie diese Seite funktionieren. Hinweis. Es gibt eine Pitfall voraus. Sehen Sie sich die Typen an. Permissive Umwandlung: parseInt und parseFloat Im realen Leben sind viele Werte nicht genau Zahlen. Vor allem die 822010pt8221 oder 8220-12px8221 in CSS verwendet. Der 82208221-Operator can8217t wandelt sie in eine Zahl um, da er das strenge Format überprüft. Es wird zurückgeben NaN: That8217s, wo parseInt springt in: parseInt und sein Freund parseFloat konvertieren den Wert Zeichen für Zeichen, bis sie etwas unmöglich zu konvertieren. Dann stoppt es und gibt zurück, was konvertiert werden könnte. Eine kleine Pitfall mit parseInt auf einigen Browsern ist, dass ECMAScript-Spezifikation erlaubt es, den Radix zu erraten. Die ältere Version der Spezifikation behandelt einen String, der mit 0 in parseInt als octal beginnt: Wenn Sie sicher sein wollen, dass 82200108221 10 bedeutet, verwenden Sie das zweite optionale Argument, um das Radix zu übergeben: Hinweis: parseInt / parseFloat gibt NaN zurück, wenn die Konvertierung anfangs aufhört : Ungenaue Berechnungen Das Gleitkomma-Format führt zu einem Verlust an Genauigkeit. Es können kleine Rechenfehler auftreten. Bitte führen Sie die folgenden: Haben Sie es ausgeführt Wenn nicht, bitte tun. Ok, das hast du. So what8217s up Vielleicht ist der Browser fehlerhaft Ändern Sie den Browser, führen Sie es erneut. Ok, nun, jetzt können Sie sicher sein: 0,1 0,2 ist nicht 0,3. Dann, was ist es Jetzt sehen Sie, gibt es einen kleinen Rechenfehler. That8217s, weil internes Gleitkommaformat eine Zahl in binärer Form darstellt. Aber genau wie 1/3 can8217t in dezimaler Form dargestellt werden (it8217s 0,3338230), kann 0,1 (1/10) nicht genau als binär dargestellt werden, und 0,2 (2/10) als auch. Ihre binären Darstellungen werden irgendwann abgeschnitten. Hier sind Sie: Wenn Sie zwei Ungenauigkeiten summieren, erhalten Sie den kleineren Berechnungsfehler. Natürlich, dass doesn8217t bedeuten, Sie can8217t Summe Zahlen in JavaScript. In der Tat, können Sie. Tatsächlich gibt es zwei Möglichkeiten, 0,1 und 0,2 zu addieren: Stellen Sie sie ganze Zahlen, Summe und dann teilen Sie zurück: Es funktioniert, weil 1 und 2 können in binärer Form genau dargestellt werden. Also, die Summe ist genau. Summe und dann auf feste Genauigkeit, wie im nächsten Abschnitt beschrieben. Rundung auf 10-te Dezimalstelle wird den Rechenfehler abschneiden. Ein weiteres komisches Beispiel, I8217m eine selbst steigende Zahl Der Grund ist, natürlich, Präzisionsverlust. Das Zahlenformat kann nicht speichern, dass viele Ziffern genau. One Sprache, überall. Sie besuchen derzeit eine alte Version der Website, gehen auf die neueste Haxe. org extern Klasse java. lang. Integer extends Zahl implementiert Vergleichbar ltNull ltInt gtgt Verfügbar in der Java-Funktion new (param1 int). Leerlauffunktion compareTo (param1. Null ltInt gt). Int Vergleicht zwei Objekte numerisch. Param anotherInteger das zu vergleichen. Geben Sie den Wert zurück, wenn er dem Argument einen Wert kleiner als wenn dies numerisch kleiner als das Argument ist, und einen Wert größer als wenn dies numerisch größer als das Argument (signierter Vergleich) ist. Da 1.2 Funktion gleich ist (param1 dynamisch). Bool Vergleicht dieses Objekt mit dem angegebenen Objekt. Das Ergebnis ist genau dann, wenn das Argument nicht ist und ein Objekt ist, das denselben Wert wie dieses Objekt enthält. Wenn die Objekte anders sind. Funktion hashCode (). Int Gibt für diesen einen Hash-Code zurück. Geben Sie für dieses Objekt einen Hash-Codewert ein, der dem durch dieses Objekt repräsentierten Primitivwert entspricht. Funktion toString (). String Gibt ein Objekt zurück, das diesen s-Wert darstellt. Der Wert wird in eine signierte Dezimaldarstellung konvertiert und als String zurückgegeben, genau so, als wäre der Integerwert als Argument für die Methode angegeben. Gibt eine Stringdarstellung des Wertes dieses Objekts in baseampnbsp10 zurück. Static var MAXVALUE (Standardwert, null). Int static var MINVALUE (Standardwert, null). Int static var SIZE (Standardwert, null). Int Die Anzahl der Bits, die verwendet werden, um einen Wert in Zweierkomplement-Binärform darzustellen. Seit 1.5 statisch var TYPE. Klasse ltNull ltInt gtgt Die Instanz, die den primitiven Typ darstellt. Seit JDK1.1 statische Funktion toString (param1. Int. Param2. Int). String Gibt eine Stringdarstellung des ersten Arguments in dem durch das zweite Argument angegebenen Radix zurück. Ltpg Wenn der Radix kleiner oder größer ist, wird stattdessen der Radix verwendet. LtpgtWenn das erste Argument negativ ist, ist das erste Element des Ergebnisses das ASCII-Minuszeichen (). Wenn das erste Argument nicht negativ ist, erscheint kein Zeichen im Ergebnis. LtpgtDie restlichen Zeichen des Ergebnisses repräsentieren die Größe des ersten Arguments. Wenn die Grße Null ist, wird sie durch ein einziges Nullzeichen () dargestellt, andernfalls wird das erste Zeichen der Darstellung der Grße nicht das Null-Zeichen sein. Die folgenden ASCII-Zeichen werden als Ziffern verwendet: ltblockquotegt lt / blockquotegt Dies sind durch und durch. Ist ltvargtNlt / vargt, dann werden die ersten ltvargtNlt / vargt dieser Zeichen als radix-ltvargtNlt / vargt-Ziffern in der angegebenen Reihenfolge verwendet. Somit sind die Ziffern für hexadezimal (Radix 16). Wenn Großbuchstaben gewünscht werden, kann die Methode auf das Ergebnis aufgerufen werden: ltblockquotegt lt / blockquotegt param radix der zu verwendende Radix in der Zeichenfolgendarstellung. Siehe java. lang. CharacterMAXRADIX siehe java. lang. CharacterMINRADIX statische Funktion bitCount (param1 int). Int Gibt die Anzahl der Ein-Bits in der Zweierkomplement-Binärdarstellung des angegebenen Wertes zurück. Diese Funktion wird manchmal als ltigtpopulation countlt / igt bezeichnet. Geben Sie die Anzahl der Ein-Bits in der Zweierkomplement-Binärdarstellung des angegebenen Wertes zurück. Seit 1.5 statische Funktion vergleichen (param1 Int. Param2. Int). Int Vergleicht zwei Werte numerisch. Der zurückgegebene Wert ist identisch zu dem, was zurückgegeben werden würde: ltpregt Integer. valueOf (x) Pareto (Integer. valueOf (y)) lt / pregt param x die erste param y die zweite zum Vergleich gibt den Wert, wenn ein Wert weniger zu vergleichen Als wenn und ein Wert größer als wenn seit 1.7 statische Funktionsdekodierung (param1 String). Null ltInt gt Decodiert a in a. Akzeptiert dezimal, hexadezimal und Oktalzahlen gegeben durch die folgende Grammatik: ltblockquotegt ltdlgt ltdtgtltigtDecodableString: lt / igt ltddgtltigtSignltsubgtoptlt / subgt DecimalNumerallt / igt ltddgtltigtSignltsubgtoptlt / subgtlt / igt ltigtHexDigitslt / igt ltddgtltigtSignltsubgtoptlt / subgtlt / igt ltigtHexDigitslt / igt ltddgtltigtSignltsubgtoptlt / subgtlt / igt ltigtHexDigitslt / igt ltddgtltigtSignltsubgtoptlt / subgtlt / igt ltigtOctalDigitslt / igt ltpgt ltdtgtltigtSign: lt / igt ltddgt ltddgt lt / dlgt lt / blockquotegt ltigtDecimalNumerallt / igt, ltigtHexDigitslt / igt, und ltigtOctalDigitslt / igt, wie in Abschnitt 3.10.1 von ltcitegtThe Javaamptrade Sprache Specificationlt / citegt definiert sind , Mit der Ausnahme, dass Unterstriche nicht zwischen den Ziffern akzeptiert werden. Ltpgt Die Folge von Zeichen, die einem optionalen Zeichen und / oder einem Radix-Spezifizierer folgen (quotiert, quotiert, quotiert oder führende Null) wird durch das Verfahren mit dem angegebenen Radix (10, 16 oder 8) analysiert. Diese Folge von Zeichen muss einen positiven Wert repräsentieren oder ein geworfen werden. Das Ergebnis wird negiert, wenn das erste Zeichen des angegebenen Vorzeichens das Minuszeichen ist. Keine Leerzeichen sind erlaubt. Param nm die zu decodieren. Geben Sie ein Objekt zurück, das den durch die Ausnahme NumberFormatException repräsentierten Wert enthält, wenn der Parameter keine parsable Integer enthält. Siehe java. lang. IntegerparseInt (java. lang. String, int) statische Funktion getInteger (param1.String). Null ltInt gt Bestimmt den Integer-Wert der Systemeigenschaft mit dem angegebenen Namen. LtpgtDas erste Argument wird als der Name einer Systemeigenschaft behandelt. Die Systemeigenschaften sind über die Methode zugänglich. Der Zeichenfolgenwert dieser Eigenschaft wird dann als Integerwert interpretiert und ein Objekt, das diesen Wert darstellt, wird zurückgegeben. Details der möglichen numerischen Formate können mit der Definition von gefunden werden. LtpgtWenn es keine Eigenschaft mit dem angegebenen Namen gibt, wenn der angegebene Name leer ist oder wenn die Eigenschaft nicht das richtige numerische Format hat, wird sie zurückgegeben. Ltpgt Mit anderen Worten liefert diese Methode ein Objekt gleich dem Wert von: ltblockquotegt lt / blockquotegt gibt den Wert der Eigenschaft zurück. siehe java. lang. SystemgetProperty (java. lang. String) siehe java. lang. SystemgetProperty (java. lang. String, java. lang. String) statische Funktion highestOneBit (param1. Int). Int Gibt einen Wert mit höchstens einem einzelnen Bit in der Position des höchstwertigen (an der linken Seite) ein Bit im angegebenen Wert zurück. Gibt Null zurück, wenn der angegebene Wert in seiner Zweierkomplement-Binärdarstellung kein Ein-Bits hat, dh wenn er gleich Null ist. Einen Wert mit einem einzelnen ein Bit in der Position des höchstwertigen Ein-Bits im angegebenen Wert zurückgeben, oder Null, wenn der angegebene Wert selbst gleich Null ist. Seit 1.5 statische Funktion lowerOneBit (param1 int). Int Gibt einen Wert mit höchstens einem einzigen Bit in der Position des niedrigstwertigen (quotrightmostquot) Ein-Bit in dem angegebenen Wert zurück. Gibt Null zurück, wenn der angegebene Wert in seiner Zweierkomplement-Binärdarstellung kein Ein-Bits hat, dh wenn er gleich Null ist. Einen Wert mit einem einzelnen Ein-Bit-Wert in der Position des niederwertigsten Ein-Bits im angegebenen Wert zurückgeben, oder Null, wenn der angegebene Wert selbst gleich Null ist. Seit 1.5 statische FunktionsnummerOfLeadingZeros (param1. Int). Int Gibt die Anzahl der Nullbits zurück, die dem höchstwertigen Bit (Bit) in der Zweierkomplement-Binärdarstellung des angegebenen Wertes vorangehen. Gibt 32 zurück, wenn der angegebene Wert in der Zweierkomplementdarstellung keine Ein-Bits hat, dh wenn er gleich Null ist. Ltpgt, dass diese Methode eng mit der Logarithmusbasis 2 zusammenhängt. Für alle positiven Werte x: ltulgt ltligtfloor (logltsubgt2lt / subgt (x)) ltligtceil (logltsubgt2lt / subgt (x)) lt / ulgt gibt die Anzahl der Nullbits vor dem höchsten Wert zurück - Anzahl (Bit) in der Zweierkomplement-Binärdarstellung des angegebenen Wertes oder 32, wenn der Wert gleich Null ist. Seit 1.5 statische FunktionsnummerOfTrailingZeros (param1. Int). Int Gibt die Anzahl der Null-Bits nach dem niederwertigsten (quotrightmostquot) Ein-Bit in der Zweierkomplement-Binärdarstellung des angegebenen Wertes zurück. Gibt 32 zurück, wenn der angegebene Wert in der Zweierkomplementdarstellung keine Ein-Bits hat, dh wenn er gleich Null ist. Die Anzahl der Null-Bits nach dem niedrigstwertigen (quotrightmostquot) Ein-Bit in der Zweierkomplement-Binärdarstellung des spezifizierten Wertes oder 32 zurück, wenn der Wert gleich Null ist. Seit 1.5 statische Funktion parseInt (param1, String, param2, Int). Int statische Funktion umgekehrt (param1. Int). Int Gibt den Wert zurück, der durch Umkehr der Reihenfolge der Bits in der Zweierkomplement-Binärdarstellung des angegebenen Wertes erhalten wird. Den Wert zurückgeben, der erhalten wird, indem die Reihenfolge der Bits in dem angegebenen Wert umgekehrt wird. Seit 1.5 statische Funktion reverseBytes (param1. Int). Int Gibt den Wert zurück, der durch Umkehr der Reihenfolge der Bytes in der Zweierkomplementdarstellung des angegebenen Wertes erhalten wird. Geben Sie den Wert zurück, der durch das Umkehren der Bytes in dem angegebenen Wert erhalten wird. Seit 1.5 statische Funktion rotateLeft (param1. Int. Param2. Int). Int Gibt den Wert zurück, der durch Drehen der Zweierkomplement-Binärdarstellung des angegebenen Wertes erhalten wird, der durch die angegebene Anzahl von Bits zurückgelassen wird. (Bits aus der linken Hand verschoben, oder höherwertig, Seite neu eingeben, auf der rechten Seite oder low-order.) LtpgtNote, die links Rotation mit einem negativen Abstand ist gleichbedeutend mit der rechten Drehung:. Beachten Sie auch, dass die Rotation um ein Vielfaches von 32 ein no-op ist, sodass alle bis auf die letzten fünf Bits des Rotationsabstands ignoriert werden können, auch wenn der Abstand negativ ist:. Den Wert zurück, der durch Drehen der Zweierkomplement-Binärdarstellung des spezifizierten Wertes erhalten wird, der durch die angegebene Anzahl von Bits zurückgelassen wird. Seit 1.5 statische Funktion rotateRight (param1. Int. Param2. Int). Int Gibt den Wert zurück, der durch Drehen der Zweierkomplement-Binärdarstellung des angegebenen Wertes rechts um die angegebene Anzahl von Bits erhalten wird. (Bits verschoben aus der rechten Hand oder niedriger Ordnung, Seite wieder eindringen auf der linken Seite oder höherwertig.) LtpgtNote, dass rechtsdrehen mit einem negativen Abstand entspricht der linken Drehung:. Beachten Sie auch, dass die Rotation um ein Vielfaches von 32 ein no-op ist, sodass alle bis auf die letzten fünf Bits des Rotationsabstands ignoriert werden können, auch wenn der Abstand negativ ist:. Den durch Drehen der Zweierkomplement-Binärdarstellung des angegebenen Wertes rechts um die angegebene Anzahl von Bits erhaltenen Wert zurück. Seit 1.5 statische Funktion signum (param1. Int). Int Gibt die Signumfunktion des angegebenen Wertes zurück. (Der Rückgabewert ist -1, wenn der angegebene Wert negativ 0 ist, wenn der angegebene Wert null ist und 1, wenn der angegebene Wert positiv ist.) Rückgabe der Signumfunktion des angegebenen Wertes. Seit 1.5 statische Funktion toBinaryString (param1. Int). String Gibt eine Stringdarstellung des Integer-Arguments als integer ohne Vorzeichen in baseampnbsp2 zurück. LtpgtDer unsigned Integer Wert ist das Argument plus 2ltsupgt32lt / supgt, wenn das Argument negativ ist sonst ist es gleich dem Argument. Dieser Wert wird in einen String von ASCII-Ziffern in binary (baseampnbsp2) ohne extra führenden s konvertiert. Wenn die vorzeichenlose Größe Null ist, wird sie durch ein einziges Nullzeichen () dargestellt, andernfalls wird das erste Zeichen der Darstellung der vorzeichenlosen Größe nicht das Nullzeichen sein. Die Zeichen () und () werden als Binärziffern verwendet. Gibt die Zeichenfolgendarstellung des unsignierten Integer-Werts zurück, der durch das Argument in binär dargestellt wird (baseampnbsp2). Seit JDK1.0.2 statische Funktion toHexString (param1 Int). String Gibt eine Stringdarstellung des Integer-Arguments als integer ohne Vorzeichen in baseampnbsp16 zurück. LtpgtDer unsigned Integer-Wert ist das Argument plus 2ltsupgt32lt / supgt, wenn das Argument negativ ist, ist es gleich dem Argument. Dieser Wert wird in einen String von ASCII-Ziffern in hexadezimal (baseampnbsp16) ohne extra führenden s konvertiert. Wenn die vorzeichenlose Größe Null ist, wird sie durch ein einziges Nullzeichen () dargestellt, andernfalls wird das erste Zeichen der Darstellung der vorzeichenlosen Größe nicht das Nullzeichen sein. Die folgenden Zeichen werden als Hexadezimalziffern verwendet: ltblockquotegt lt / blockquotegt Dies sind die Zeichen durch und durch. Wenn Großbuchstaben gewünscht werden, kann die Methode auf das Ergebnis aufgerufen werden: ltblockquotegt lt / blockquotegt gibt die Zeichenfolgendarstellung des unsignierten Integer-Wertes zurück, der durch das Argument in hexadezimal (baseampnbsp16) dargestellt wird. Seit JDK1.0.2 statische Funktion toOctalString (param1 Int). String Gibt eine Stringdarstellung des Integer-Arguments als integer ohne Vorzeichen in baseampnbsp8 zurück. LtpgtDer unsigned Integer-Wert ist das Argument plus 2ltsupgt32lt / supgt, wenn das Argument negativ ist, ist es gleich dem Argument. Dieser Wert wird in einen String von ASCII-Ziffern in oktal (baseampnbsp8) ohne extra führenden s konvertiert. LtpgtWenn die vorzeichenlose Größe Null ist, wird sie durch ein einziges Nullzeichen () dargestellt. Andernfalls wird das erste Zeichen der Darstellung der vorzeichenlosen Größe nicht das Nullzeichen sein. Die folgenden Zeichen werden als oktale Ziffern verwendet: ltblockquotegt lt / blockquotegt Dies sind die Zeichen durch. Gibt die Stringdarstellung des vorzeichenlosen Integer-Wertes zurück, der durch das Argument in octal (baseampnbsp8) dargestellt wird. Seit JDK1.0.2 statische Funktion valueOf (param1 String param2 Int). Null ltInt gt Gibt ein Objekt zurück, das den aus dem angegebenen Wert extrahierten Wert enthält, wenn er mit dem durch das zweite Argument angegebenen Radix geparst wird. Das erste Argument wird so interpretiert, dass es eine signierte Ganzzahl in der durch das zweite Argument angegebenen Radix repräsentiert, genau so, als ob die Argumente der Methode gegeben wurden. Das Ergebnis ist ein Objekt, das den durch den String angegebenen Ganzzahlwert darstellt. Ltpgt Mit anderen Worten liefert diese Methode ein Objekt gleich dem Wert von: ltblockquotegt lt / blockquotegt param radix das Radix, das beim Interpretieren verwendet werden soll, ein Objekt zurück, das den Wert enthält, der durch das Zeichenfolgenargument im angegebenen Radix dargestellt wird. Ausnahme NumberFormatException, wenn das keine parsable enthält. Version 18636, geändert 2013-05-08 10:55:15 by apiTry Ausführen der folgenden in JavaScript: Ich habe gerade gelernt, die harte Art und Weise, dass JavaScript denkt, die führende Null bedeutet eine Oktanzahl Ganzzahl. Und da es keine 8 oder 9 in der Basis-8 gibt, gibt die Funktion Null zurück. Wie es oder nicht, ist dies durch Design. Was sind die Workarounds Hinweis: Zur Vollständigkeit halte ich im Begriff, eine Lösung zu posten, aber es ist eine Lösung, die ich hasse, also poste bitte andere / bessere Antworten. Die 5. Ausgabe des JavaScript-Standards (ECMA-262) führt zu einer brechenden Änderung, die dieses Verhalten beseitigt. Mozilla hat eine gute Zuschreibung. Gefragt May 11 09 at 22:14 Schritt 1) ​​Tun Sie sich selbst einen Gefallen und immer die Radix, wie in den vorherigen Antworten sowie in Doug39s Buch erwähnt. Schritt 2) Wenn Sie es ernst meinen, JavaScript zu lernen, dann holen Sie sich eine Kopie von Doug39s Buch. Es ist von unschätzbarem Wert. Mein fav Buch so weit. Hier ist eine Überprüfung fyi: realtech. burningbird. net/learning-javascript/basics/hellip ndash fuentesjr May 12 09 at 1:25 In ECMAScript 5th Edition-kompatiblen Browsern, wie Internet Explorer 9, der Basisparameter standardmäßig auf 10 (dezimal) Es sei denn, die zu analysierende Zahl wird mit 0x vorangestellt. z. B. 0xFF. In welchem ​​Fall der Basisparameter standardmäßig 16 ist. Hoffentlich, eines Tages, wird dieses Problem ein entferntes Gedächtnis sein. Ndash Andy Earnshaw 9. Mai um 10:02 Uhr portman: quotthe 5. Auflage. Stellt eine brechende Veränderung ein, die dieses Verhalten beseitigt. Wahrscheinlich lohnt es sich, darauf hinzuweisen, dass sogar in der 3. Auflage (vor 13 Jahren) die Implementierungen quotengespeist wurden, um es nicht zu tun: quotWenn radix 0 oder undefined ist und die string39s-Zahl beginnt mit einer 0-stelligen nicht gefolgt Ein x oder X. dann kann die Implementierung nach eigenem Ermessen die Zahl entweder als oktal oder als Dezimalzahl interpretieren. Implementierungen werden gefördert, um Zahlen in diesem Fall als dezimal zu interpretieren. (Meine Betonung) ndash T. J. Crowder Dies ist eine gemeinsame Javascript gotcha mit einer einfachen Lösung: Sie könnten auch Nummer: beantwortet May 11 09 at 22:15 Number. Glorreich. Ndash Portman Mai 11 09 am 22:18 Die Zahl braucht Anführungszeichen um die 08. Auch nur gewarnt werden, wird Nummer (3908.12339) produzieren 8.123 als Ausgabe. Wenn Sie wirklich eine Ganzzahl wünschen, verwenden Sie nicht die Nummer (oder die Muster-Übereinstimmung Ihrer Eingabe, um nur ganze Zahlen zu gewährleisten). Ndash Jason S May 11 09 at 22:22 Zunächst einmal brauchen Sie wirklich nicht parseInt () in den meisten Fällen. Sein Algorithmus ist voll von verschiedenen Quirks, das 0-Präfix ist sogar durch die Spezifikation verboten (die Spezifikation der Funktion parseInt erlaubt nicht mehr, dass Implementierungen Strings, die mit einem 0-Zeichen beginnen, als Oktalwerte behandeln.), Aber es dauert eine Weile zu ändern Browser-Verhalten (auch wenn Im sicher, dass niemand verwendet Oktalen absichtlich in parseInt ()). Und Internet Explorer 6 wird sich nie ändern (der Internet Explorer 9 entfernt jedoch Unterstützung für Oktale in parseInt ()). Der von ihm verwendete Algorithmus macht meistens mehr als man will. In gewissen Fällen, seine schlechte Idee. Das erste Argument wird in String konvertiert, wenn es nicht bereits vorhanden ist. Trimmen Sie die Zahl, so wird 4 zu 4. Überprüfen Sie, ob Zeichenfolge beginnt mit - oder und entfernen Sie dieses Zeichen. Wenn es war - machen Sie den Ausgang negativ. Konvertiere radix in Ganzzahl. Wenn Radix 0 oder NaN ist, versuchen Sie, Radix zu erraten. Es bedeutet, dass für 0x und (Nicht-Standard) 0 gesucht wird. Wenn Präfix nicht gefunden wurde, wird 10 verwendet (und dies ist, was Sie wahrscheinlich was). Wenn Radix ist 16 Streifen 0x von Anfang an, wenn es existiert. Finde das erste Zeichen, das nicht im Bereich von radix liegt. Wenn es nichts vor dem ersten Zeichen gibt, das nicht im Bereich des Radix liegt, geben Sie NaN zurück. Wandeln Sie die Zahl in Dezimalzahl um, bis das erste Zeichen nicht im Bereich liegt. Zum Beispiel liefert parseInt (012z, 27) 0 Math. pow (27, 2) 1 Math. pow (27, 1) 2 Math. pow (27, 0). Der Algorithmus selbst ist nicht wirklich schnell, aber Leistung variiert (Optimierungen machen Wunder). Ich habe Test auf JSPerf und die Ergebnisse sind interessant. Und sind am schnellsten mit Ausnahme für Chrome, wo parseFloat () irgendwie viel schneller als andere Optionen (2 bis 5 mal schneller als andere Optionen, wo ist eigentlich 5 mal langsamer). In Firefox, Test ist sehr schnell - in bestimmten Fällen habe ich Infinity-Zyklen. Das andere ist die Richtigkeit. ParseInt (). Und parseFloat () machen Fehler stumm. Im Falle von parseInt () und parseFloat () Zeichen werden nach ungültigem Zeichen ignoriert - Sie können es ein Feature (in den meisten Fällen seine Anti-Feature für mich, wie switch Anweisungen Fallthrough) nennen, und wenn Sie es brauchen, verwenden Sie eine dieser . Im Falle von es bedeutet, 0 zurückzugeben. Also seien Sie vorsichtig. In bestimmten Fällen kann parseInt () Sie verletzen. Schlecht. Wenn beispielsweise die Zahl so groß ist, dass sie in exponentieller Schreibweise geschrieben wird. Verwenden Sie dann Math-Methoden. Wie auch immer, am Ende möchte ich eine Liste, wenn von Methoden, um Strings zu Zahlen (sowohl Integern und Floats) konvertieren. Sie haben verschiedene Verwendungen und Sie können interessiert sein, welche Methode zu verwenden. In den meisten Fällen ist die einfachste eine Zahl Methode, verwenden Sie es, wenn Sie können. Was immer Sie tun (mit Ausnahme der ersten Methode), sollten alle das richtige Ergebnis geben. ParseInt (Zahl) Nicht verwenden. So einfach ist das. Verwenden Sie entweder parseInt (Zahl, 10) oder diese Problemumgehung, die die parseInt-Funktion magisch fixiert. Bitte beachten Sie, dass diese Problemumgehung in JSLint nicht funktioniert. Bitte beschweren Sie sich nicht darüber. ParseInt (Zahl, radix) parseInt konvertiert Argument in Zahlen unter Verwendung des oben erwähnten Algorithmus. Vermeiden Sie es auf große ganze Zahlen, wie es falsche Ergebnisse in Fällen wie parseInt (2e30) tun kann. Auch nie geben sie als Argument für Array. prototype. map oder Underscore. js Variation davon, wie Sie seltsame Ergebnisse erhalten können (versuchen Sie 1, 2, 3.map (parseInt), wenn Sie wollen (für Erklärung, ersetzen Sie ParseInt mit der Konsole. log)). Verwenden Sie es, wenn entweder: Wenn Sie Daten lesen müssen, die in verschiedenen radix geschrieben. Sie müssen Fehler ignorieren (zum Beispiel ändern 123px zu 123) Andernfalls verwenden Sie andere sicherere Methoden (wenn Sie eine Ganzzahl benötigen, verwenden Sie stattdessen Math. floor). Präfix (Zahl) wandelt Zahl in Schwimmer um. Im Falle eines Fehlers gibt es NaN zurück, das Sie entweder durch isNaN () oder einfach durch die Zahlnummer vergleichen können (es sollte nur für NaN true zurückgeben). Seine sehr schnell in der Oper. Verwenden Sie es, es sei denn, Sie möchten bestimmte Funktionen anderer Typen. Ist ein Hack, der zweimal die ganze Zahl verwendet. Da bitweise Operationen nur für ganze Zahlen möglich sind, wird die Zahl automatisch konvertiert. Die meisten Browser haben Optimierungen für diesen Fall. Da bitweise Operationen nur unter Math. pow (2, 32) funktionieren, verwenden Sie diese Methode nie mit großen Zahlen. Sein flammendes schnell auf SpiderMonkey Maschine. Verwenden Sie es, wenn entweder: Sie schreiben Code, wo Leistung für SpiderMonkey (wie FireFox-Plugins) wichtig ist und Sie keine Fehlererkennung benötigen. Sie benötigen Integer und Pflege JavaScript-Größe. ParseFloat (Anzahl) parseFloat () funktioniert wie die eine Ausnahme - es verarbeitet die Zahl bis zum ersten ungültigen Zeichen statt der Rückgabe von NaN. Seine sehr schnell (aber nicht so schnell wie auf Firefox) in V8. Im Gegensatz zur ParseInt-Variation sollte es mit Array. prototype. map sicher sein. Verwenden Sie es, wenn entweder: Sie schreiben leistungs-kritischen Code für Node. js oder youre Schreiben von Google Chrome-Plugins (V8). Sie müssen Fehler ignorieren (zB Änderung 42.13px auf 42.13) Zahl (Zahl) Vermeiden Sie es. Es funktioniert wie Präfix und ist in der Regel langsamer. Die einzige Verwendung, wo es nützlich sein könnte, ist Rückruf für Array. prototype. map - Sie können nicht als Rückruf verwenden. Neue Zahl (Zahl) Verwenden Sie es, wenn Sie jeden mit 0 Wahrheitswert und mit typeof der Zahl verwechseln müssen. Ernsthaft, nicht. Math-Methoden, wie Math. ceil (Zahl) Verwenden Sie sie, wenn Sie integer als seine sicherere als parseInt () durch nicht ignorieren unerwartete Zeichen benötigen. Bitte beachten Sie, dass technisch es lange Umwandlung - String float integer float (Zahlen in JavaScript sind floats) - aber die meisten Browser haben Optimierungen für sie, so dass in der Regel nicht so auffällig. Seine auch sicher mit Array. prototype. map. Wenn Sie wissen, Ihr Wert wird in der signierten 32-Bit-Integer-Bereich sein, dann wird x die richtige Sache in allen Szenarien zu tun. Wenn Sie nach binary not () suchen, benötigt die Spezifikation eine ToInt32-Konvertierung für das Argument, das die offensichtliche Umwandlung in ein Int32 ausführt und angegeben wird, um NaN-Werte auf Null zu zwingen. Ja, das ist unglaublich hackig, aber so bequem. Tatsächlich ist es wirklich wichtig, um parseInt für die bequeme Verwendung in funktionalen Ausdrücken zu wickeln, wie map in quot7quot, quot4quot, quot09quot, quot5quot. map (parseInt) Map übergibt den Index des Elements im Array als zweites Argument, das von interpretiert wird ParseInt als Basis, es sei denn, Sie wickeln es. Ndash Plynx: machen Sie Ihre eigene Funktion, zu tun, was Sie wirklich wollen, ist nur eine Option, wenn Sie nicht wie das Hinzufügen der, 10 die ganze Zeit auf die parseInt () - Aufruf. Es hat den Nachteil, eine nicht standardmäßige Funktion: bequemer für Sie, wenn Sie es viel, aber vielleicht mehr verwirrend für andere. Wenn youve getan ein Bündel von Codierung bereits mit parseInt und dont wollen hinzufügen, 10 auf alles, können Sie einfach überschreiben die Funktion, um Basis 10 die Standardeinstellung: Das kann einen späteren Leser verwirren, so dass eine parseInt10 () - Funktion kann mehr sein selbsterklärend. Persönlich bevorzuge ich es mit einer einfachen Funktion, als zu addieren, 10 die ganze Zeit - schafft nur mehr Gelegenheit für Fehler. Sie können auch, anstelle von parseFloat oder parseInt, verwenden Sie den unären Operator. Und für eine gute Maßnahme Der Unary-Plus-Operator geht seinem Operanden voraus und wertet seinen Operanden aus, versucht aber, ihn in eine Zahl umzuwandeln, falls er nicht bereits vorhanden ist. Obwohl unäre Negation (-) auch Un-Zahlen umwandeln kann, ist unary plus die schnellste und bevorzugte Art, etwas in eine Zahl umzuwandeln. Weil es keine anderen Operationen auf der Zahl ausführt. Beantwortet Jul 18 15 um 0:30 Ihre Antwort 2016 Stack Exchange, Inc

No comments:

Post a Comment