Maison  >  Article  >  interface Web  >  Quelle est la méthode pour convertir une chaîne en nombre ?

Quelle est la méthode pour convertir une chaîne en nombre ?

angryTom
angryTomoriginal
2019-07-26 09:28:2337714parcourir

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 44

ParseInt : 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 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.

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 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.

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 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. 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn