Il existe de nombreuses façons de convertir des chaînes en nombres en js, mais quelle méthode est la plus appropriée ? Ici, je vais présenter cinq méthodes de conversion de chaînes en nombres et analyser chaque méthode.
parseInt(num); // Mode par défaut (pas de base)
parseInt(num, 10); // Passer en base (dizaines)
parseFloat(num) // Nombre à virgule flottante
Number(num); // Constructeur de nombre
~~num // Notation bit à bit
num / 1 // Diviser un nombre
num * 1 // Multiplier un nombre
num - 0 / / Soustraire 0
+num // Opérateur unaire "+"
Utilisation de parseInt en js :
Selon le test de référence de JsPerf.com, la plupart les navigateurs répondent le mieux à parseInt. Bien que ce soit le moyen le plus rapide, l'utilisation de preseInt rencontrera certains pièges courants :
parseInt('08') // returns 0 部分老浏览器. parseInt('44.jpg') // returns 44
parseInt : Lorsqu'aucune base n'est transmise, la base par défaut est 10 parseInt(num, 10), Si vous ne le faites pas connaissez le type de l'attribut num, n'utilisez pas parseInt pour convertir une chaîne en nombre.
Utilisation de parseFloat dans js :
Si vous n'analysez pas les nombres hexadécimaux, c'est un très bon choix. Par exemple :
parseInt(-0xFF) // returns -255 parseInt("-0xFF") // returns -255 parseFloat(-0xFF) // returns -255 parseFloat("-0xFF") // returns 0
Remarque : Les nombres hexadécimaux négatifs dans les chaînes sont un cas particulier, et si vous les analysez avec parseFloat, le résultat sera incorrect. Pour éviter les situations NaN dans votre programme, vous devez vérifier la valeur convertie.
parseFloat('44.jpg') // return 44
parseFloat : Soyez prudent lors de la conversion de nombres hexadécimaux. Si vous ne connaissez pas le type d'objet que vous souhaitez convertir, n'utilisez pas parseFloat.
Bitwise pas en js :
peut convertir une chaîne en un entier, mais ce n'est pas un nombre à virgule flottante. S'il s'agit d'une conversion de chaîne, elle renverra 0
~~1.23 // returns 1 ~~"1.23" // returns 1 ~~"23" // returns 23 ~~"Hello world" // returns 0
Quel est le principe de cela ? En retournant) chaque bit, également connu sous le nom de complément A1 du nombre. Vous pouvez l'utiliser, mais notez qu'il ne peut être utilisé que pour stocker des nombres entiers. Donc, en général, ne l'utilisez pas sauf si vous êtes sûr que le nombre est compris entre des entiers de 32 bits (en raison de la spécification d'appel de ToInt32).
NOT au niveau du bit : utilisez ceci pour vous assurer qu'il n'y a aucun caractère dans l'entrée, uniquement pour les entiers.
Utilisation du numéro en js :
Le numéro a le même problème que la méthode de conversion mentionnée ci-dessus lors de l'analyse, il essaie de connaître le numéro que vous lui avez donné :
Number("023") // returns 23 Number(023) // returns 19
Remarque : 023 est en fait un nombre octal, et peu importe ce que vous faites, il renvoie 19 ; il en va de même pour les nombres hexadécimaux sans guillemets simples ou doubles.
Le nombre est également l'un des plus lents de JsPerf.
Numéro : Je ne l'utilise pratiquement pas.
Utilisation de l'opérateur unaire dans js :
"1.23" * 1 // returns 1.23 "0xFF" - 0 // returns 255 "0xFF.jpg" / 1 // returns NaN +"023" // returns 23
L'opérateur unaire est différent des autres méthodes d'analyse. S'il s'agit d'une valeur NaN, alors la valeur renvoyée est. aussi NaN. C'est ma façon préférée de convertir des valeurs numériques, car je ne pense pas qu'un objet contenant des caractères doive être traité comme 0 ou "deviné" en fonction du nombre de bits dont il dispose. J'utilise essentiellement l'opérateur + car c'est moins déroutant. Bien que -0 soit acceptable à utiliser, il ne traduit pas vraiment l'intention de conversion en nombre.
Résumé de la façon dont les chaînes sont converties en nombres :
Nombres hexadécimaux négatifs lorsque les chaînes sont converties en nombres. Tout ce qui doit d'abord être converti en chaîne (par exemple via + "" ), puis analysé en un nombre à l'aide d'opérateurs unaires ou parseInt avec radix. Mais lorsque le résultat n’est pas une valeur NaN, il est plus approprié d’utiliser parseFloat.
Recommandations associées :
Code js pour convertir une chaîne en nombre_compétences javascript
js parseInt Convertir une chaîne Le premier quelques nombres sont convertis en int
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!