Exercice 22/38

Soit une variable var1 de type string et qui contient un nombre.
Dans le fichier "script.js" :

  • déclarez la variable nombre;
  • affectez la valeur de var1 de telle sorte que nombre soit de type number;
  • cliquez sur "Soumettre ma réponse".

Leçon 22/38

Vous allez aborder une série d'exercices introduisant un certain nombre de fonctions et propriétés utiles pour des variables de type string et number.

Commençons avec la fonction parseInt().

À quoi ça sert ?

  • Cette fonction retourne en résultat un nombre en analysant une chaîne de caractères;
  • Seul le premier nombre trouvé dans la chaîne de caractère est retourné;
  • Si le premier caractère de la chaîne ne peut pas être converti en un nombre, la fonction retourne en résultat NaN (Not A Number);

Exemple :

var texte1 = "Je suis une chaîne de caractère";
var texte2 = "9 février 2016";
parseInt(texte1); // Retourne NaN
parseInt(texte2); // Retourne 9

L'intérêt principal est donc de pouvoir convertir un nombre écrit dans une chaîne de caractère de type string "10" en un vrai nombre de type number 10 sur lequel il est possible d'effectuer des opérations.

C'est le cas quand vous récupérez une information de l'utilisateur avec prompt().

Remarque :

Si vous essayez de convertir du texte qui ne peut pas être converti en type number, alors Javascript renverra la valeur NaN pour "Not a Number" :

var test1 = parseInt("1");
var test2 = parseInt("Je suis une chaîne de caractères");

Ici test1 sera bien de type number et contiendra 1. La conversion est réussie.
Et test2 sera aussi de type number mais contiendra NaN pour indiquer qu'il y a eu une erreur car la chaîne ne peut pas être convertie en nombre.
Une division par zéro donnera aussi NaN.

Commentaires les mieux notés

  • mram Administrateur

    Votre premier code était bon, il faut juste le mettre sur une ligne => var nombre = ... ;

  • patricerameaux

    avez-vous bien déclaré la variable demandée : j'ai supposé que les variables déjà existantes étaient test1 et test2

  • Youyou

    Ah ! J'ai trouver la bonne réponse mais je ne comprend pas, la façon précédente dont je l'avais écrite était fausse ? Pourtant je l'avais écrit comme sur l'exemple indiqué a l'exercice..

  • maksika

    Pouvez vous me guider car je ne trouve pas encore le bon code. Voici ce que j 'ai écrit : var nombre = parselnt("var1");

54 Commentaires

  • mram

    mram Administrateur

    Votre premier code était bon, il faut juste le mettre sur une ligne => var nombre = ... ;

    le 11/01/2017 à 19h13

  • patricerameaux

    patricerameaux

    avez-vous bien déclaré la variable demandée : j'ai supposé que les variables déjà existantes étaient test1 et test2

    le 05/10/2016 à 11h04

  • Youyou

    Youyou

    Ah ! J'ai trouver la bonne réponse mais je ne comprend pas, la façon précédente dont je l'avais écrite était fausse ? Pourtant je l'avais écrit comme sur l'exemple indiqué a l'exercice..

    le 18/01/2017 à 19h22

  • maksika

    maksika

    Pouvez vous me guider car je ne trouve pas encore le bon code. Voici ce que j 'ai écrit : var nombre = parselnt("var1");

    le 22/01/2017 à 16h25

  • mram

    mram Administrateur

    @Youyou : non c'est bien votre 2ème code qui est le bon

    le 22/01/2017 à 23h47

  • Youyou

    Youyou

    Salut,je ne trouve pas l'erreur a mon code il me dit : AVEZ-VOUS BIEN UTILISÉ PARSEINT() ? Voici mon code : var nombre = var1; parseInt(nombre);

    le 18/01/2017 à 19h13

  • mram

    mram Administrateur

    @maksika : il ne faut pas mettre de guillemets car Javascript comprend que c'est du texte et non une référence à la variable var1

    le 22/01/2017 à 23h49

  • mram

    mram Administrateur

    Il n'est pas nécessaire de déclarer la variable "var1", elle l'est déjà et contient déjà une valeur, il suffit juste de l'utiliser.

    le 19/05/2016 à 17h59

  • enzo44200

    enzo44200

    parseInt AVEC UN i MAJUSCULE ??

    le 30/11/2016 à 20h57

  • romainmathieu

    romainmathieu

    bonjour , je suis un peu perdu , pouvez vous m ' aider

    le 23/10/2016 à 12h11

  • atif.souidi

    atif.souidi

    bonjour, besoins d'aide merci.

    le 21/09/2016 à 18h32

  • mram

    mram Administrateur

    Oui, dans le doute il suffit de copier / coller le texte dans votre éditeur de texte préférer pour voir la lettre en question, c'est vrai que la police utilisée ici prête à confusion.

    le 02/12/2016 à 13h25

  • abdo7219

    abdo7219

    mon code valide est le suivant var nomber; nombre = parseInt(var1);

    le 03/05/2017 à 17h01

  • atif.souidi

    atif.souidi

    je ne comprend pas mon erreur.

    le 22/09/2016 à 17h30

  • mram

    mram Administrateur

    Dans votre code "var1" ne fait pas référence à la variable en question : c'est juste du texte, Javascript ne peut pas l'interpréter en tant que variable à cause des guillemets.

    le 24/10/2016 à 13h34

  • atif.souidi

    atif.souidi

    je pense avoir tout essayer toujour le meme message avez-vous bien récupéré la valeur de "var1".

    le 22/09/2016 à 18h41

  • laurence.alfonso

    laurence.alfonso

    Bonjour, je suis bloquée, après plusieurs tentatives. var nombre = prompt("var1", "nombre");alert(nombre);parseInt("nombre");

    le 14/10/2016 à 09h01

  • mram

    mram Administrateur

    Et oui, vous faites parseInt() mais pas sur la variable var1, mais sur la chaîne de caractères "var1" : ce n'est pas la même chose ...

    le 22/09/2016 à 23h11

  • dzmadrak

    dzmadrak

    Question pour voir la valeur il faut faire F12 et voir dans console? Car là il me dit var1 non definitedUncaught ReferenceError: var1 is not defined

    le 30/01/2017 à 01h00

  • bretel.val

    bretel.val

    Je ne comprends pas, pour mon résultat final, var nombre = parselnt(var1); n'est pas bon alors qu'on nous demande d’affecter la valeur de var1 de telle sorte que nombre soit de type number donc j'ai obtenu var nombre = var1 mais on me dit qu'il faut que j'utilise parselnt(), ce qui m'amène à var nombre = var1; parselnt(var1); puis à var nombre = parselnt(var1) mais là aussi ça ne marche pas. Pouvez-vous m'expliquer où est mon erreur ? Merci

    le 19/03/2017 à 14h07

  • mram

    mram Administrateur

    Pas besoin de voir la valeur pour valider l'exercice. Dans votre code il ne faut pas oublier d'attribuer le résultat à "number".

    le 31/01/2017 à 14h53

  • jenebakone

    jenebakone

    bonjour,je ne parviens pas à réaliser l'exercice.On me demande si j'ai bien utilisé le parseInt avec le code suivant: var nombre=var1; parseInt(var1); Lorsque j'ajoute des guillemets: var nombre="var1";parseInt("var1") on me demande si j'ai bien récupéré la valeur de var1 et si j'ai bien utilisé le parseInt. Je ne trouve pas mon erreur.Pouvez vous m'aider?Merci

    le 17/10/2016 à 13h58

  • mram

    mram Administrateur

    Attention c'est parseInt() avec un "i" majuscule et non un "l" . Selon la police utilisée ça ne se voit pas bien dans la description de l'exercice.

    le 21/03/2017 à 17h41

  • mram

    mram Administrateur

    @laurence.alfonso : pourquoi utiiser prompt() et alert(), ce n'est pas demandé.

    le 18/10/2016 à 09h27

  • mram

    mram Administrateur

    @jenebakone : votre ligne 1 est inutile, il faut utiliser la variable nombre à la ligne 2....

    le 18/10/2016 à 09h28

  • yarkagone

    yarkagone

    Je ne sais pas comment récupérer la valeur de var1? pourriez vous m' aidez svp. Voilà par ailleurs mon code faux....:var nombre; parseInt(var1);

    le 10/01/2017 à 18h27

  • yarkagone

    yarkagone

    celui ci serait il plus proche de la vérité ? var nombre= var1 parseInt(nombre);

    le 10/01/2017 à 19h29

  • mram

    mram Administrateur

    Non, attention a bien distinguer la "description" de l'exercice avec un ou des exemples théoriques, et les "instructions" qui représentent le cas pratique de l'exercice. Dans ce cas il y a une variable "var1" qui est déjà déclarée.

    le 05/10/2016 à 14h13

  • v.redois

    v.redois

    Deux commentaires : - J'ai été piégé dans un premier temps par le nom de la fonction, qui contient un 'i' majuscule plutôt qu'un 'l' minuscule. - Même problème qu'avant : ça marche, mais il semble que ce ne soit pas ce qui est attendu ("Avez-vous bien récupéré la valeur de "var1" ?")

    le 19/05/2016 à 17h59

  • Carine1972

    Carine1972

    Ok, merci pour la réponse, j'y vois plus clair. Par contre, je en comprends toujours pas pourquoi, dans le dernier exemple, on dit que test2 est de type number. Il n'y a pourtant pas de nombre à l'intérieur de cette chaine de caractères !

    le 30/08/2017 à 15h21

  • mram

    mram Administrateur

    Bonjour, oui elle aura le type number mais contiendra la valeur NaN pour "Not a Number" : ça indique une erreur dans le sens où on essaye de convertir du texte en nombre.

    le 06/09/2017 à 09h41

  • florent.portail-91

    florent.portail-91

    Bonjour, mon code est le suivant : var nombre; nombre = parsInt(var1); je ne vois pas mon erreur

    le 18/08/2018 à 17h32

  • florent.portail-91

    florent.portail-91

    ok j'ai oublié un "e" à parseInt, autant pour moi ...

    le 18/08/2018 à 17h36

  • Jérôme BATAILLE

    Jérôme BATAILLE

    Une phrase du genre "seul le premier caractére, s'il est un nombre, est rétourné!" résume-t-elle bien 2phrases de la leçon?

    le 12/08/2017 à 15h49

  • mram

    mram Administrateur

    Bonjour, c'est pas vraiment ça : c'est le premier nombre qui est trouvé dans la chaîne de caractères qui est retourné, mais celui-ci n'a pas besoin d'être forcément au tout début de la chaîne.

    le 16/08/2017 à 14h47

  • laura.sibille

    laura.sibille

    Bonjour! Pourquoi est-ce faux? var nombre= var1; parseInt(nombre);

    le 14/11/2017 à 08h27

  • mram

    mram Administrateur

    Bonjour, à la ligne 1 il ne faut pas affecter "var1" à "nombre" mais juste déclarer la variable "nombre". Et ligne 2 on utilise donc la variable "nombre" pour affecter la fonction parseInt() que l'on applique à "var1".

    le 16/11/2017 à 18h06

  • ludovicthiolet

    ludovicthiolet

    Bonjour, j'ai bien compris comment rentrer le code correctement. Mais pourriez vous m'expliquez l'intérêt de la fonction "parsenInt" ? Quelle est sa finalité ? Pourquoi vouloir convertir du texte en nombre si je peux directement écrire dans ma chaine de caractères le texte concerné non pas en texte mais en nombre ? Par exemple : "j'ai eu vingt-cinq ans hier" au lieu de "j'ai eu 25 ans hier".

    le 03/10/2017 à 17h05

  • mram

    mram Administrateur

    Bonjour, attention dans "j'ai eu 25 ans hier" l'âge est écrit en chiffres mais ça reste du texte (type string). ParseInt("j'ai eu 25 ans hier") va pouvoir extraire le chiffre (25) et le convertir en type number. Evidemment si c'est écrit en toute lettre (vingt-cinq) alors parseInt() ne trouvera rien qui ressemble à un chiffre dans la chaîne de texte.

    le 03/10/2017 à 22h39

  • ludovicthiolet

    ludovicthiolet

    Bonjour, Effectivement je suis d'accord avec vous. Alors à quoi sert donc "parseInt" si de toute façon je veux un chiffre dans une chaîne de caractères en toute lettre et non pas de façon numéraire, et vis et vers ça ? Si je l'ai rentré comme ça c'est comme ça que je le voulais, alors à quoi bon vouloir l'extraire pour le convertir en "number" ?

    le 04/10/2017 à 13h21

  • mram

    mram Administrateur

    Bonjour, ça peut être utile dans certains cas. Par exemple, si on demande l'age d'un utilisateur avec prompt() : prompt() renvoi l'information en type string donc impossible de faire des opérations derrières avec le nombre, il faut donc le convertir en type number.

    le 09/10/2017 à 00h10

  • pierrotcora-96

    pierrotcora-96

    bonjour je ne comprends pas mon erreur

    le 13/06/2018 à 17h29

  • pierrotcora-96

    pierrotcora-96

    le code est var nombre;parseInt(var1);

    le 13/06/2018 à 17h30

  • pierrotcora-96

    pierrotcora-96

    c'est bon j'ai trouvé

    le 13/06/2018 à 17h39

  • triplaxs

    triplaxs

    svp pouvez vous me venir en aide?mon code est//* var nombre=var1; parseInt(nombre);

    le 02/08/2017 à 14h11

  • mram

    mram Administrateur

    Bonjour, à chaque tentative vous faites trop compliqué. Le code peut tenir en une seule ligne. Dans votre dernière tentative, seule la troisième ligne suffit.

    le 05/08/2017 à 10h13

  • gasnier.br

    gasnier.br

    Bonsoir, Voici mon code : var var1="Nous sommes à 8 jours de Noël"; var nombre=parseInt(var1); Mais marche pô... Et là j'avoue que je ne comprends pas. Il me semble que j'ai fais comme dans la leçon. Quelqu'un a une idée ? Merci

    le 17/12/2017 à 18h23

  • mram

    mram Administrateur

    Bonjour, la variable "var1" existe déjà donc pas besoin de la déclarer et de lui mettre du texte.

    le 23/12/2017 à 12h42

  • Carine1972

    Carine1972

    Je ne comprends pas cette leçon : j'avais compris que si l'on mettait du texte il s'agissait du type string et si l'on mettait un nombre il s'agissait du type number. Maintenant on dit que "je suis une chaîne de caractères" est de type number. Mais au final c'est quoi alors la vraie différence entre "string" et "number" ? J'ai loupé une partie de leçon ?

    le 26/08/2017 à 16h18

  • mram

    mram Administrateur

    Bonjour, non vous avez bien compris la différence initialement. Ici dans cet exercice on utilise une fonction qui sert à convertir un nombre qui se trouve dans une chaîne de caractère. Exemple: "12" est une chaîne de caractères du fait des guillemets même si ça contient un nombre. parseInt("12") va renvoyer 12 (qui sera de type number). Relisez les explications si besoin.

    le 30/08/2017 à 13h42

  • mohamadoubachirououmar

    mohamadoubachirououmar

    SPT aider moi. Voici mon code. var nombre ; nombre=parseInt("var1");

    le 28/06/2018 à 10h33

  • mram

    mram Administrateur

    Attention quand vous mettez une variable entre guillemets ça devient juste du texte et ce n'est plus interprété comme une variable par Javascript.

    le 05/07/2018 à 03h50

  • vnierat

    vnierat

    je ne comprends pas mon erreur sur cete exercice. Merci :)

    le 23/10/2017 à 18h49

  • mram

    mram Administrateur

    Bonjour, il fallait utiliser "var1" dans la fonction parseInt(), ce que vous avez fait après coup.

    le 25/10/2017 à 15h08

  • carina.kugathasan-13

    carina.kugathasan-13

    Bonjour, je ne vois pas l'erreur. Pouvez-vous m'aider svp? var nombre; parseInt(var1); Le message "Vous devez utiliser la fonction parseInt pour transformer une variable" s'affiche.

    le 18/12/2018 à 16h34

  • meriam

    meriam Administrateur

    Il faut créer une seule instruction var nombre = parseInt(var1);

    le 18/12/2018 à 17h00

  • carina.kugathasan-13

    carina.kugathasan-13

    Ah oui, ça fonctionne, merci meriambensalha-29

    le 18/12/2018 à 20h03

index.html
script.js
<!DOCTYPE HTML> <html> <head> <title>Convertir du texte en nombre</title> <script src="script.js"></script> </head> <body> </body> </html>
var var1 = '42'