Maximale Basis für parseInt ()?

7

Der zweite Parameter von parseInt() definiert die Basis, an die der erste Parameter geparst wird. Ich habe mit einigen Zahlen herumgespielt und herausgefunden, dass ich keine richtige Antwort mehr bekomme, wenn die Basis größer als 36 ist:

%Vor%

Gibt es ein Limit? Und warum ist es 36?

Ich habe Chrome verwendet, als ich meine Tests durchgeführt habe

    
Amberlamps 05.11.2012, 15:10
quelle

4 Antworten

17

36 ist 10 + 26. Es gibt 26 Buchstaben im Alphabet plus 0-9. Das ist die maximale Radix, die Sie verwenden können.

    
gilm 05.11.2012, 15:12
quelle
9

Die ECMAScript-Spezifikation spezifiziert die maximale Radix als 36.

  • Es gibt 10 Ziffern: (0-9)
  • Es gibt 26 Zeichen: (a-z)
%Vor%

Es sollte auch erwähnt werden, dass es möglich wäre, eine Radix höher als 36 zu unterstützen. Die Spezifikation könnte angepasst werden, um Groß- und Kleinschreibung-Zeichen für ein Radix & gt; 36, beispielsweise 37-62, zu verwenden. Sonderzeichen, wie zB mit Symbolen und Buchstaben mit Akzenten könnten verwendet werden.

Der Grund dafür ist, dass es nicht eindeutig und unnötig ist. Parsing-Algorithmen für benutzerdefinierte Radixes sollte nicht zu schwierig sein, und könnte nach Bedarf geschrieben werden.

Wenn Sie den Radix auf 36 beschränken, können Sie die Leistung mit dem Dienstprogramm ausgleichen.

    
zzzzBov 05.11.2012 15:12
quelle
3

Es ist 36, weil die Zeichenfolgendarstellung 0-9 plus das Alphabet für zusätzliche Ziffern verwendet. 10 + 26 = 36.

    
Nick 05.11.2012 15:12
quelle
2

Das Maximum ist 36, denn das ist die Anzahl der Ziffern und Zeichen, die das Standardalphabet hat (0123456789abcdefghijklmnopqrstuvwxyz). Wenn Sie sich über etwas anderes wundern, möchten Sie vielleicht die offizielle ECMAScript-Sprachspezifikation mit einem Lesezeichen versehen , das ist es alles da

    
Elias Van Ootegem 05.11.2012 15:14
quelle

Tags und Links