Comment convertir une chaîne de caractères en un nombre entier en JavaScript ?
Est-il possible de le faire automatiquement, ou dois-je écrire un sous-programme pour le faire manuellement ?
Comment convertir une chaîne de caractères en un nombre entier en JavaScript ?
Est-il possible de le faire automatiquement, ou dois-je écrire un sous-programme pour le faire manuellement ?
parseInt ou unaire plus ou même parseFloat avec plancher ou Math.round
parseInt :
var x = parseInt("1000",10); // you want to use radix
// of 10 so you get a decimal number even with a leading 0
unaire plus si votre chaîne est déjà sous la forme d'un nombre entier :
var x = +"1000";
si votre chaîne est ou pourrait être un float et que vous voulez un integer :
var x = Math.floor("1000.01"); //floor automatically converts string to number
ou, si vous devez utiliser Math.floor plusieurs fois :
var floor = Math.floor;
var x = floor("1000.01");
Si vous êtes du genre à oublier d'indiquer le radix lorsque vous appelez parseInt, vous pouvez utiliser parseFloat et arrondir comme vous le souhaitez. Ici, j'utilise floor.
var floor = Math.floor;
var x = floor(parseFloat("1000.01"));
Il est intéressant de noter que Math.round (comme Math.floor) effectue une conversion de chaîne de caractères en nombre, donc si vous voulez que le nombre soit arrondi (ou si vous avez un nombre entier dans la chaîne de caractères), c'est un excellent moyen, peut-être mon préféré :
var round = Math.round;
var x = round("1000"); //equivalent to round("1000",0)
On ne le voit pas souvent. valueOf est surtout utilisé en interne, selon le W3C.
var x = "1000".valueOf();
Essayez la fonction parseInt :
var number = parseInt("10");
Mais il y a un problème. Si vous essayez de convertir "010" à l'aide de la fonction parseInt, elle le détecte comme un nombre octal et renvoie le nombre 8. Vous devez donc spécifier un radix (de 2 à 36). Dans ce cas, la base 10.
parseInt(string, radix)
Exemple :
var result = parseInt("010", 10) == 10; // Returns true
var result = parseInt("010") == 10; // Returns false
J'ai posté la mauvaise réponse ici, désolé. corrigé.
C'est une vieille question, mais j'adore cette astuce :
~~"2.123"; //2
~~"5"; //5
Le double bit négatif élimine tout ce qui se trouve après la virgule et le convertit en un format numérique. On m'a dit que c'était légèrement plus rapide que d'appeler des fonctions et autres, mais je ne suis pas entièrement convaincu.
EDIT : Une autre méthode que je viens de voir ici (une question sur l'opérateur javascript >>>, qui est un décalage à droite de zéro) qui montre que le décalage d'un nombre par 0 avec cet opérateur convertit le nombre en un uint32 ce qui est bien si vous le voulez aussi non signé . Là encore, cela se convertit en un entier non signé ce qui peut entraîner des comportements étranges si vous utilisez un nombre signé.
"-2.123" >>> 0; // 4294967294
"2.123" >>> 0; // 2
"-5" >>> 0; // 4294967291
"5" >>> 0; // 5
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.