web-dev-qa-db-fra.com

différence entre parseInt () et parseFloat ()

Duplicata possible:
différence de comportement entre parseInt () et parseFloat ()

var box  = $('.box'),
fontSize = parseInt(box.css('font-size'), 10) + 5;

 $('button').on('click', function() {
  box.animate({fontSize: fontSize});
});

// ..

 var box  = $('.box'),
 fontSize = parseFloat(box.css('font-size'), 10) + 5;

  $('button').on('click', function() {
    box.animate({fontSize: fontSize})
});

quelle est la différence entre ..

**fontSize = parseInt(box.css('font-size'), 10);**

**fontSize = parseFloat(box.css('font-size'), 10);**

et et pourquoi mettre 10 comme contexte .. Veuillez aider?

14
Iam_Signal

JavaScript propose deux méthodes pour convertir des primitives non numériques en nombres: parseInt () et parseFloat (). Comme vous l'avez peut-être deviné, le premier convertit une valeur en entier tandis que le second convertit une valeur en nombre à virgule flottante.

Tout littéral numérique contenu dans une chaîne est également converti correctement, de sorte que la chaîne "0xA" est correctement convertie en nombre 10. Cependant, la chaîne "22,5" sera convertie en 22, car la virgule décimale est un caractère non valide pour un entier . Quelques exemples:

var iNum1 = parseInt ("1234blue"); // renvoie 1234

var iNum2 = parseInt ("0xA"); // renvoie 10

var iNum3 = parseInt ("22,5"); // renvoie 22

var iNum4 = parseInt ("bleu"); // renvoie NaN

La méthode parseInt () a également un mode radix, vous permettant de convertir des chaînes en binaire, octal, hexadécimal ou toute autre base en un entier. Le radix est spécifié comme deuxième argument de parseInt (), donc un appel pour analyser une valeur hexadécimale ressemble à ceci:

var iNum1 = parseInt ("AF", 16); // renvoie 175

Bien sûr, cela peut également être fait pour le binaire, l'octal et même le décimal (qui est le mode par défaut):

var iNum1 = parseInt ("10", 2); // renvoie 2

var iNum2 = parseInt ("10", 8); // renvoie 8

var iNum2 = parseInt ("10", 10); // renvoie 10

Si les nombres décimaux contiennent un zéro non significatif, il est toujours préférable de spécifier le radix à 10 afin de ne pas vous retrouver accidentellement avec une valeur octale. Par exemple:

var iNum1 = parseInt ("010"); // renvoie 8

var iNum2 = parseInt ("010", 8); // renvoie 8

var iNum3 = parseInt ("010", 10); // renvoie 10

Dans ce code, les deux lignes analysent la chaîne "010" en un nombre. La première ligne pense que la chaîne est une valeur octale et l'analyse de la même manière que la deuxième ligne (qui spécifie le radix comme 8). La dernière ligne spécifie un radix de 10, donc iNum3 finit par être égal à 10.

Une autre différence lors de l'utilisation de parseFloat () est que la chaîne doit représenter un nombre à virgule flottante sous forme décimale, et non octale ou hexadécimale. Cette méthode ignore les zéros en tête, donc le nombre octal 0908 sera analysé en 908, et le nombre hexadécimal 0xA renverra NaN car x n'est pas un caractère valide pour un nombre à virgule flottante. Il n'y a pas non plus de mode Radix pour parseFloat ().

Quelques exemples d'utilisation de parseFloat ():

var fNum1 = parseFloat ("1234blue"); // renvoie 1234

var fNum2 = parseFloat ("0xA"); // renvoie 0

var fNum3 = parseFloat ("22,5"); // renvoie 22,5

var fNum4 = parseFloat ("22.34.5"); // renvoie 22,34

var fNum5 = parseFloat ("0908"); // renvoie 908

var fNum6 = parseFloat ("bleu"); // renvoie NaN

En savoir plus , En savoir plus

Question similaire En savoir plus ici

43
Techie

Tout d'abord, seul parseInt accepte le deuxième argument. Ça s'appelle radix. Il représente le système numérique à utiliser. Par exemple, vous pouvez convertir un nombre en code binaire ou hexadécimal.

parseFloat n'accepte qu'un seul argument.