281 votes

Quelle est la différence entre parseInt(string) et Number(string) en JavaScript ?

Quelle est la différence entre parseInt(string) et Number(string) en JavaScript ?

410voto

sjngm Points 4108
parseInt("123hui")

renvoie 123

Number("123hui")

les retours NaN

En d'autres mots, parseInt() analyse jusqu'à la première non-chiffres et renvoie ce qu'il a analysé. Number() veut convertir l'ensemble de la chaîne en un nombre, qui peut aussi être un float BTW.


EDIT: Lucero a commenté sur la base qui peut être utilisé conjointement avec d' parseInt(). Pour ce qui est concerné, veuillez voir le MÉDECIN de LA réponse ci-dessous (je ne vais pas vous copie ici, le doc doit avoir une juste part de la gloire...).

86voto

THE DOCTOR Points 1870

Le premier prend deux paramètres:

parseInt(string, radix)

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

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

  • Si la chaîne commence par "0x", le
    radix est de 16 (hexadécimal)
  • Si la chaîne commence par "0", l' radix est de 8 (octal). Cette fonctionnalité
    est obsolète
  • Si la chaîne commence par tout autre valeur, la base 10 (décimal)

L'autre fonction que vous avez mentionné ne prend qu'un seul paramètre:

Number(object)

La fonction Number() convertit l'objet en argument un nombre qui représente la value de l'objet.

Si la valeur ne peut pas être converti en nombre, NaN est renvoyé.

24voto

Steven Keith Points 1041

parseInt(string) convertit une chaîne contenant des caractères non numériques à un nombre, aussi longtemps que la chaîne commence par les caractères numériques

Number(String) retourne NaN si la chaîne contient des caractères non numériques

13voto

ChaosPandion Points 37025

L' parseInt fonction vous permet de spécifier une variété de rayons pour la chaîne d'entrée et est limitée à des valeurs entières.

parseInt('Z', 36) === 35

L' Number constructeur appelle une fonction qui permet d'analyser la chaîne avec une grammaire et est limité à la base 10 et en base 16.

StringNumericLiteral :::
 StrWhiteSpaceopt
 StrWhiteSpaceopt StrNumericLiteral StrWhiteSpaceopt

StrWhiteSpace :::
 StrWhiteSpaceChar StrWhiteSpaceopt

StrWhiteSpaceChar :::
 Les espaces 
LineTerminator

StrNumericLiteral :::
 StrDecimalLiteral 
HexIntegerLiteral

StrDecimalLiteral :::
 StrUnsignedDecimalLiteral 
 + StrUnsignedDecimalLiteral 
 -StrUnsignedDecimalLiteral

StrUnsignedDecimalLiteral :::
 L'infini
 DecimalDigits .  DecimalDigitsopt ExponentPartopt.  DecimalDigits ExponentPartopt
 DecimalDigits ExponentPartopt

DecimalDigits :::
 DecimalDigit 
 DecimalDigits DecimalDigit

DecimalDigit ::: l'un des
 0 1 2 3 4 5 6 7 8 9

ExponentPart :::
 ExponentIndicator SignedInteger

ExponentIndicator ::: l'un des
 e E

SignedInteger :::
 DecimalDigits 
 + DecimalDigits 
 -DecimalDigits

HexIntegerLiteral :::
 0x HexDigit 
 0X HexDigit 
 HexIntegerLiteral HexDigit

HexDigit ::: l'un des
 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F

6voto

dArI0 Points 71

Additif à @sjngm de réponse:

Ils ont tous deux également ignorer les espaces blancs:

var foo = " 3 "; console.log(parseInt(foo); / / 3 console.log(Nombre(foo); / / 3

Il n'est pas tout à fait correct. Comme sjngm a écrit parseInt analyse de la chaîne de nombre premier. Il est vrai. Mais le problème, c'est quand vous voulez analyser, séparé par des espaces ie. "12 345". Dans ce cas
parseInt("12 345") sera de retour 12 au lieu de 12345. Afin d'éviter cette situation, vous devez garniture des espaces avant l'analyse de nombre. Ma solution serait:

     var number=parseInt("12 345".replace(/\s+/g, ''),10);

Remarquer une petite chose que j'ai utilisé dans parseInt() fonction. parseInt("string",10) permettra de définir le nombre de décimales format. Si vous souhaitez analyser chaîne comme "08", vous obtiendrez 0 parce que 8 n'est pas un nombre octal.L'explication est ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X