4.1 Variables numériques |
See You Why? |
Curieux, on peut déclarer une variable en JavaScript, sans en déterminer le type... en cas de déclaration, non suivie d'une affectation, on dira qu'elle est de type "undefined". Pour l'instant, ce type de variables nous importe peu. On préférera faire connaissance de variables :
De plus, on peut affecter une variable d'une valeur, sans l'avoir déclarée et le type d'une variable peut se modifier au cours de la lecture du programme. Ce n'est pas une raison pour tout ignorer des types de variables qui existent en JavaScript.
En général, en informatique, on admet par exemple les types suivants :
Type | Taille | borne inférieure | borne supérieure | ex: |
byte/char short int int long int float double bouléen string (chaine) |
caractère sur 1 byte entier de 2 octets entier 4 octets entier de 8 octets réel de 4 octets (virgule flottante) réel de 8 octets V ou F sur 1 octet autant de bytes que de caractères |
0 -32768 -2147483648 -9223372036854775808 -3.4 × 1038 -1.7 × 10308 |
255 +32767 2147483647 9223372036854775807 3.4 × 1038 -1.7 × 10308 |
|
Type | Taille | borne inférieure | borne supérieure | exemple |
JavaScript ne différencie pas les types de variables numériques... c'est donc plus facile, mais attention aux erreurs non décelables.
L'avantage est de ne pas devoir préciser le types de boite avec laquelle on travaillera... l'inconvénient, si on ne distingue pas les ingrédients du matériel dans une recette, est qu'on sera incapable de déceler une erreur dans l'instruction : "Vous cassez votre poele" écrite au lieu de "Vous cassez vos œufs dans votre poele"...
Parmi les variables numériques, on abordera les entiers positifs, les nombres décimaux et les nombres négatifs.
Les quelques exemples que nous avons donnés jusqu'ici faisaient appel à des entiers positifs... et il n'est pas obligatoire de déclarer les variables.
Nous profitons de l'occasion pour préciser :
Exemple
|
Un des usages des variables est de pouvoir attribuer à une variable la valeur d’une autre variable, telle quelle ou modifiée. C'est la cas de la variable produit dans l'exemple ci-dessus : "la variable produit prend la valeur du contenu de la variable valeur1 multipliée par la valeur du contenu de la variable valeur2".
Signifie que la valeur de produit est maintenant celle du produit de valeur1 et valeur2. Notez que cette instruction n’a modifié en rien les valeurs de valeur1 et valeur2 :
une instruction d’affectation ne modifie pas ce qui est à droite du signe d'affectation,
elle ne modifie que ce qui est situé à gauche du signe d’affectation.
Cette règle reste valable si l'on écrit :
compteur = 12;
compteur = compteur + 1;
en effet, on devrait lire : "la variable compteur prend la valeur du contenu de la variable compteur augmentée de 1". L'instruction notée en gras (fausse en math, mais correcte en JS puisque le signe = signifie 'devient égal à') signifie que la nouvelle valeur de compteur est l'ancienne valeur de compteur (12), augmentée de 1.
“ Un nombre décimal est un nombre écrit avec une virgule et compris entre deux nombres entiers. ” est une approche suffisante en informatique, mais ne l'est certainement pas dans la rigueur mathématique. Nous nous en contenterons ici. 9,95 est un nombre décimal compris entre 9 et 10.
JS va se satisfaire de cette définition, sauf que, comme en anglais, on ne fera pas usage d'une virgule décimale mais d'un point décimal. De plus, même si en typographie correcte, on sépare chaque tranche de 3 chiffres par une espace (rappel, espace est féminin en typographie - voir), parfois remplacée par des points en typographie incorrecte, les nombres décimaux en JS ne peuvent pas comprendre d'espace ni de point autre que le point décimal.
Nous utilisons l'écriture des nombres en base décimale (avec 10 chiffres), l'ordinateur ne travaille qu'en base binaire (avec 2 chiffres 0 et 1). Il ne faut dès lors pas s'étonner de quelques imprécisions dues aux arrondis lors de calcul qui nous paraissent simples en décimal.
Par exemple, sur notre ordinateur, nous avons divisé 5 par 9, puis multiplié le résultat par 6... mentalement, le lecteur aura calculé rapidement 30/9 donc 10/3 donc 3,3333333333, mais le résultat affiché était 3,3333333335... faible erreur, mais erreur quand même.
Tout ce qui a été dit au niveau des entiers positifs et des décimaux positifs reste valable pour les négatifs... donc pas de commentaires supplémentaires.
Et pour ceux qui veulent montrer qu'ils en savent plus que le commun des mortels, précisons qu'un nombre en JS est stocké sur 64 bits (ou 8 bytes) dont une mantisse de 53 bits. Cela permet des valeurs entières jusqu'à 9 007 199 254 740 991, à partir duquel on commence à perdre de la précision jusqu'à 2^1024-1 qui est la valeur flottante la plus élevée représentable en JavaScript.
JavaScript réunit en un seul type tous les entiers, petits et grands, les décimaux, et les réels, flottants ou pas.
JavaScript inclut également, en plus des nombres décrits ci-dessus, dans le type number deux valeurs spéciales.
Infinity, un nombre signé, est renvoyé dès que le résultat dépasse la capacité de stockage de number, mais aussi dans des cas limites simples.
Dans les cas indécidables, ou bien lorsqu'une opération qui retourne un nombre ne peut pas le faire, c'est la valeur NaN (Not A Number) qui est renvoyée.
Nous verrons plus en détail les opérateurs arithmétiques, les méthodes de Number et les méthodes de Math pour les cas qui produisent ces deux valeurs au chapitre 12 "Quelques opérateurs mathématiques".
Il nous paraît être trop tôt de vous parler de la portée des variables, et de savoir si elles sont locales ou globales, nous y reviendrons dans le chapitre "11. Variables locales ou globales", ici.
JS a créé une fonction qui permet de tester le type de variable qu'on lui passe comme paramètre. La syntaxe en est simple :
typeof ma_variable_a_tester
ou typeof(ma_variable_a_tester)
qui retourne l'une des valeurs 'number', 'string', 'object', 'boolean', 'function' ou 'undefined'.
Exemple
|
voir suite >>>
voir suite >>>
voir suite >>>
voir suite >>>
voir suite >>>
voir suite >>>