Comment convertir une chaîne en nombre en JavaScript (avec des exemples)

Conversion de chaînes en nombres

La parseInt()fonction analyse un argument de chaîne et renvoie un entier de la base spécifiée (la base dans les systèmes numériques mathématiques).

parseInt(string, radix);

Paramètres

string

La valeur à analyser. Si l' stringargument n'est pas une chaîne, il est converti en chaîne (en utilisant l' ToStringopération abstraite). L'espace de début dans l'argument de chaîne est ignoré. '= Radix Un entier entre 2 et 36 qui représente la base (la base dans les systèmes numériques mathématiques) de la chaîne mentionnée ci-dessus. Spécifiez 10le système numérique décimal couramment utilisé par les humains. Spécifiez toujours ce paramètre pour éliminer la confusion du lecteur et garantir un comportement prévisible. Différentes implémentations produisent des résultats différents lorsqu'une base n'est pas spécifiée, la valeur par défaut étant généralement 10. Valeur de retour Un nombre entier analysé à partir de la chaîne donnée. Si le premier caractère ne peut pas être converti en nombre, NaNest renvoyé.

La description

La parseIntfonction convertit son premier argument en une chaîne, l'analyse et renvoie un entier ou NaN. Sinon NaN, la valeur renvoyée sera l'entier qui est le premier argument pris comme nombre dans la base spécifiée (base). Par exemple, une base de 10 indique une conversion à partir d'un nombre décimal, 8 octal, 16 hexadécimal, etc. Pour les radices ci 10- dessus , les lettres de l'alphabet indiquent des chiffres supérieurs à 9. Par exemple, pour les nombres hexadécimaux (base 16), Aà Fest utilisé.

Si parseIntrencontre un caractère qui n'est pas un nombre dans la base spécifiée, il l'ignore ainsi que tous les caractères suivants et renvoie la valeur entière analysée jusqu'à ce point. parseInttronque les nombres en valeurs entières. Les espaces de début et de fin sont autorisés.

Comme certains nombres incluent le ecaractère dans leur représentation sous forme de chaîne (par exemple 6.022e23), l'utilisation de parseIntpour tronquer des valeurs numériques produira des résultats inattendus lorsqu'elle est utilisée sur des nombres très grands ou très petits. parseIntne doit pas être utilisé comme substitut de Math.floor().

Si radix est undefinedou 0 (ou absent), JavaScript suppose ce qui suit:

  • Si l'entrée stringcommence par «0x» ou «0X», la base est 16 (hexadécimal) et le reste de la chaîne est analysé.
  • Si l'entrée stringcommence par «0», la base est huit (octal) ou 10 (décimal). La base exacte 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 base lors de l'utilisation de parseInt.
  • Si l'entrée stringcommence par une autre valeur, la base est 10 (décimal).
  • Si le premier caractère ne peut pas être converti en nombre, parseInt renvoie NaN.

À des fins arithmétiques, la valeur NaN n'est pas un nombre dans aucune base. Vous pouvez appeler la fonction isNaN pour déterminer si le résultat de parseInt est NaN. Si NaN est transmis aux opérations arithmétiques, les résultats de l'opération seront également NaN.

Pour convertir le nombre en sa chaîne littérale dans une base particulière, utilisez intValue.toString (radix).

Exemples

En utilisant parseIntles exemples suivants, tous retournent 15:

parseInt(' 0xF', 16); parseInt(' F', 16); parseInt('17', 8); parseInt(021, 8); parseInt('015', 10); // parseInt(015, 10); will return 15 parseInt(15.99, 10); parseInt('15,123', 10); parseInt('FXX123', 16); parseInt('1111', 2); parseInt('15 * 3', 10); parseInt('15e2', 10); parseInt('15px', 10); parseInt('12', 13);

Les exemples suivants retournent tous NaN:

parseInt('Hello', 8); // Not a number at all parseInt('546', 2); // Digits are not valid for binary representations

Les exemples suivants retournent tous -15:

parseInt('-F', 16); parseInt('-0F', 16); parseInt('-0XF', 16); parseInt(-15.1, 10) parseInt(' -17', 8); parseInt(' -15', 10); parseInt('-1111', 2); parseInt('-15e1', 10); parseInt('-12', 13);

Les exemples suivants retournent tous 4:

parseInt(4.7, 10); parseInt(4.7 * 1e22, 10); // Very large number becomes 4 parseInt(0.00000000000434, 10); // Very small number becomes 4

L'exemple suivant renvoie 224:

parseInt('0e0', 16);

Plus d'information:

parseInt sur MDN

  • parseInt () et parseFloat () tentent de convertir la chaîne en nombre si possible. Par exemple,var x = parseInt("100"); // x = 100
  • Number () sera converti en un nombre par lequel la valeur peut être représentée. Cela inclut les dates en nombre de millisecondes depuis le 1er janvier 1970 à minuit, UTC, les valeurs booléennes à 1 ou 0 et les valeurs qui ne peuvent pas être converties en un nombre reconnaissable deviendront NaN. Cela signifie Pas un nombre et c'est aussi techniquement un nombre!