Maison > Article > interface Web > Quelle est la méthode pour convertir une chaîne en nombre ?
Tutoriel recommandé : Tutoriel JS
JavaScript est un langage magique, chaîne Il y a 5 façons de convertir des nombres, et chacune a ses propres pièges ! Ensuite, à travers cet article, je vais vous présenter les 5 méthodes de conversion de chaînes JavaScript en nombres et leurs pièges. Les amis intéressés devraient y jeter un oeil
Lequel choisir ? Et une sorte ? Quand le choisir ? Pourquoi choisir ce genre de chose ? Nous les passons en revue un par un et décomposons les pièges courants de chaque approche.parseInt
Sur la base des benchmarks de JsPerf.com, la plupart des navigateurs répondent mieux à parseInt. Bien que ce soit le moyen le plus rapide, vous rencontrerez certains pièges courants lors de l'utilisation de preseInt :parseInt('08') // returns 0 部分老浏览器. parseInt('44.jpg') // returns 44ParseInt : lorsqu'aucune base n'est transmise, la base par défaut est 10 parseInt(num, 10), si vous ne le faites pas. Je ne connais pas le type de l'attribut num, n'utilisez pas parseInt pour convertir une chaîne en nombre.
parseFloat
C'est un très bon choix si vous n'analysez pas les nombres hexadécimaux. 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 44parseFloat : 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.
Pas au niveau du bit
Vous pouvez 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 0Quel 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.
Numéro
Le nombre a le même problème que la méthode de conversion mentionnée ci-dessus Lors de l'analyse, il essaie de trouver le numéro que vous lui avez donné. :Number("023") // returns 23 Number(023) // returns 19
Remarque : 023 est en fait un nombre octal, qui renvoie 19 quelle que soit la façon dont vous le faites ; 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.Opérateur cloud unaire
"1.23" * 1 // returns 1.23 "0xFF" - 0 // returns 255 "0xFF.jpg" / 1 // returns NaN +"023" // returns 23L'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. 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
Lorsque les chaînes de nombres hexadécimaux négatifs 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.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!