2011-07-07 3 views

Répondre

46

Vous voudrez peut-être pas toujours pour analyser l'entier en un nombre de base 10, donc fournir le radix vous permet de spécifier d'autres systèmes de numérotation.

La base est le nombre de valeurs pour un seul chiffre. Hexidécimal serait 16. Octal serait 8, Binaire serait 2, et ainsi de suite ...

Dans la fonction parseInt(), il y a plusieurs choses que vous pouvez faire pour faire allusion à la base sans la fournir. Ceux-ci peuvent également fonctionner contre vous si l'utilisateur entre une chaîne qui correspond à l'une des règles, mais ne le fait pas expressément. Par exemple:

// Numbers with a leading 0 used a radix of 8 (octal) before ECMAScript 5. 
// These days, browsers will treat '0101' as decimal. 
var result = parseInt('0101'); 

// Numbers that start with 0x use a radix of 16 (hexidecimal) 
var result = parseInt('0x0101'); 

// Numbers starting with anything else assumes a radix of 10 
var result = parseInt('101'); 

// Or you can specify the radix, in this case 2 (binary) 
var result = parseInt('0101', 2); 
+2

Ainsi parseInt ('0101') donne 101 ou 65? – Vivekh

+4

@Vivekh - Il était utilisé pour le sauvegarder en 2011 lorsque j'ai posté la réponse. Une vérification rapide dans Google Chrome semble indiquer qu'ils ont un peu changé. 'parseInt ('0101')' renvoie maintenant '101'. Différents navigateurs peuvent avoir un comportement différent. Incluez toujours la base pour des résultats fiables. –

+0

@Vivekh - Vous pouvez voir la documentation la plus récente sur https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt –

18

Parce que si vous avez un numéro de chaîne comme 0700 et que vous voulez que la sortie soit entier 700 vous devez informer parseInt() qu'il est un nombre décimal plutôt que octal.

console.log(parseInt("0700")); 
// 448 

// I really wanted decimal (base 10) 
console.log(parseInt("0700", 10)); 
// 700 

// What is this? Binary, Decimal, Octal? 
console.log(parseInt("0110")); 
// 72 

// as binary 
console.log(parseInt("0110", 2)); 
// 6 

Remarque Je ne répondais la moitié de votre question. Voir les autres pour de bonnes définitions de ce qu'est réellement une base.

+1

En outre, parseInt binaire ('10101', 2) – Joe

3

Le radix est le numéro de base du système numérique: http://en.wikipedia.org/wiki/Radix

Normalement, vous ne devez spécifier le radix si vous voulez qu'il soit différent de 10. Plus précisément (de http://www.w3schools.com/jsref/jsref_parseInt.asp):

Si le paramètre radix est omis, JavaScript suppose:

Si la chaîne commence par "0x", le radix est 16 (hexadécimal) Si les STRI ng commence par "0", la base est 8 (octal). Cette fonction est dépréciée Si la chaîne commence par une autre valeur , la radix est 10 (décimal)

0

Le paramètre radix est utilisé pour spécifier lequel système numérique doit être utilisé, par exemple, une base de 16 (hexadécimal) indique que le numéro de la chaîne doit être analysé à partir d'un nombre hexadécimal jusqu'à un nombre décimal .

Si le paramètre radix est omis, JavaScript suppose:

Si la chaîne commence par "0x", le radix est 16 (hexadécimal)

Si la chaîne commence par "0" , la base est 8 (octal).Cette fonction est dépréciée

Si la chaîne commence par une autre valeur , la radix est 10 (décimal)

Source W3Schools

3

Radix est la base d'un système de numération. Il existe un nombre infini de systèmes numériques, mais ceux avec lesquels la plupart des gens sont familiers sont base 10 (décimal) et base 2 (binaire).

Les valeurs numériques peuvent être interprétées différemment dans différentes bases. Par exemple, le nombre 10 en binaire peut être représenté par 2 en décimal.

Dans le cas de parseInt(), la base vous permet de spécifier la base à utiliser. Par défaut, une base de 10 est utilisée.

Cependant, le radix doit toujours être spécifié, même lors de l'utilisation de base 10. Prenons le cas de

parseInt("010") // Retourne 8

À première vue, vous pouvez vous attendre la déclaration pour revenir 10. Explicite utilisation du radix aidera à éviter toute confusion:

parseInt("010", 10) // Retourne: 10

0

Il suffit d'ajouter des informations supplémentaires qui répond clairement à la question:

Si radix est défini ou 0 (ou absent), JavaScript suppose:

  • [...]
  • Si la chaîne d'entrée commence par "0", radix est huit (octal) ou 10 (décimal). La base de données choisie dépend de l'implémentation. ECMAScript 5 spécifie que 10 (décimal) est utilisé, mais tous les navigateurs ne le prennent pas encore en charge. Pour cette raison, spécifiez toujours une racine lors de l'utilisation de parseInt.
  • [...]

Source: MDN parseInt()