Nombres JavaScript
- Page précédente Modèles de chaînes JS
- Page suivante JS BigInt
JavaScript ne possède qu'un seul type de valeur numériques.
Le point décimal est facultatif lors de l'écriture des valeurs numériques.
Type de valeur JavaScript
Les nombres en JavaScript peuvent être écrits avec ou sans point décimal :
Exemple
var x = 3.14; // Nombre avec point décimal var y = 3; // Nombre sans point décimal
Les nombres très grands ou très petits peuvent être écrits en notation scientifique :
Exemple
var x = 123e5; // 12300000 var y = 123e-5; // 0.00123
Les nombres en JavaScript sont toujours des nombres à 64 bits en virgule flottante
Contrairement à de nombreux autres langages de programmation, JavaScript ne définit pas de types de nombres différents, tels que des entiers, des courts, des longs, des flottants, etc.
Les nombres en JavaScript sont toujours stockés en tant que nombres à double précision flottants, conformément à la norme internationale IEEE 754.
Ce format utilise 64 bits pour stocker les valeurs, où 0 à 51 stockent les chiffres (segments), 52 à 62 stockent l'exponente et 63 le signe :
Valeur (alias Fraction/Mantisse) | Exponente | Signe |
---|---|---|
52 bits(0 - 51) | 11 bits (52 - 62) | 1 bit (63) |
Précision
Les entiers (sans utiliser d'exponentiel ou de notation scientifique) sont arrondis à 15 chiffres.
Exemple
var x = 999999999999999; // x sera 999999999999999 var y = 9999999999999999; // y sera 10000000000000000
Le plus grand nombre décimal est de 17 chiffres, mais l'arithmétique flottante n'est pas toujours 100% précise :
Exemple
var x = 0.2 + 0.1; // x sera 0.30000000000000004
L'utilisation de la multiplication et de la division aide à résoudre le problème ci-dessus :
Exemple
var x = (0.2 * 10 + 0.1 * 10) / 10; // x sera 0.3
Addition de nombres et de chaînes de caractères
Attention !!
L'addition et la concaténation en JavaScript utilisent tous deux l'opérateur +.
Les nombres utilisent l'addition. Les chaînes de caractères utilisent la concaténation.
Si vous additionnez deux nombres, le résultat sera un nombre :
Exemple
var x = 10; var y = 20; var z = x + y; // z sera 30 (un nombre)
Si vous additionnez deux chaînes de caractères, le résultat sera une concaténation de chaînes :
Exemple
var x = "10"; var y = "20"; var z = x + y; // z sera 1020 (chaîne)
Si vous additionnez un nombre et une chaîne de caractères, le résultat est une concaténation de chaînes :
Exemple
var x = 10; var y = "20"; var z = x + y; // z sera 1020 (une chaîne de caractères)
Si vous ajoutez un nombre à une chaîne, le résultat est également une concaténation de chaînes :
Exemple
var x = "10"; var y = 20; var z = x + y; // z sera 1020 (chaîne)
Une erreur courante consiste à penser que le résultat devrait être 30 :
Exemple
var x = 10; var y = 20; var z = "The result is: " + x + y;
Une erreur courante consiste à penser que le résultat devrait être 102030 :
Exemple
var x = 10; var y = 20; var z = "30"; var result = x + y + z;
JavaScript compile de gauche à droite.
Parce que x et y sont des nombres, 10 + 20 seront ajoutés.
Parce que z est une chaîne, 30 + "30" est concaténé.
Chaîne numérique
Les chaînes JavaScript peuvent contenir du contenu numérique :
var x = 100; // x est un nombre var y = "100"; // y est une chaîne
Dans toutes les opérations numériques, JavaScript essaie de convertir les chaînes en nombres :
Cet exemple fonctionne ainsi :
var x = "100"; var y = "10"; var z = x / y; // z sera 10
Cet exemple fonctionnera également ainsi :
var x = "100"; var y = "10"; var z = x * y; // z sera 1000
Cet exemple fonctionne ainsi :
var x = "100"; var y = "10"; var z = x - y; // z sera 90
Cependant, cet exemple ne fonctionnera pas comme celui-ci :
var x = "100"; var y = "10"; var z = x + y; // z ne sera pas 110 (plutôt 10010)
Dans le dernier exemple, JavaScript a utilisé l'opérateur + pour la concaténation des chaînes.
NaN - Non-numérique
NaN
C'est un mot réservé de JavaScript, qui indique qu'un nombre n'est pas un nombre légal.
Essayer de faire une division avec une chaîne non numérique donnera NaN (Not a Number) :
Exemple
var x = 100 / "Apple"; // x sera NaN (Not a Number)
Cependant, si la chaîne contient des valeurs numériques, le résultat sera un nombre :
Exemple
var x = 100 / "10"; // x sera 10
Vous pouvez utiliser la fonction JavaScript globale : isNaN()
pour déterminer si une valeur est un nombre :
Exemple
var x = 100 / "Apple"; isNaN(x); // retourne true, car x n'est pas un nombre
soyez prudent NaN
. Si vous utilisez des opérations mathématiques NaN
alors le résultat sera également NaN
:
Exemple
var x = NaN; var y = 5; var z = x + y; // z sera NaN
le résultat peut être une concaténation :
Exemple
var x = NaN; var y = "5"; var z = x + y; // z sera NaN5
NaN
est un nombre,typeof NaN
retourne number
:
Exemple
typeof NaN; // Retourne "number"
Infinity
Infinity
ou -Infinity
) est la valeur retournée par JavaScript lorsque le calcul d'un nombre dépasse la plage maximale possible.
Exemple
var myNumber = 2; while (myNumber != Infinity) { // Exécute jusqu'à Infinity myNumber = myNumber * myNumber; }
Diviser par 0 (zéro) génère également Infinity
:
Exemple
var x = 2 / 0; // x sera Infinity var y = -2 / 0; // y sera -Infinity
Infinity
est un nombre :typeOf Infinity
retourne number
.
Exemple
typeof Infinity; // Retourne "number"
hexadécimal
JavaScript interprète les nombres précédés de 0x
les constantes numériques sont interprétées comme hexadécimales.
Exemple
var x = 0xFF; // x sera 255.
Ne jamais écrire des nombres avec un préfixe zéro (par exemple 07).
Certaines versions de JavaScript interprètent les nombres avec un préfixe zéro comme octaux.
Par défaut, Javascript affiche les nombres sous forme de décimal.
Mais vous pouvez utiliser toString()
La méthode affiche le nombre en hexadécimal, octal ou binaire.
Exemple
var myNumber = 128; myNumber.toString(16); // Retourne 80 myNumber.toString(8); // Retourne 200 myNumber.toString(2); // Retourne 10000000
Les nombres peuvent être des objets
Le JavaScript crée généralement des valeurs numériques par des littéraux : var x = 123
Mais cela peut également être fait via le mot-clé new
Défini comme objet : var y = new Number(123)
Exemple
var x = 123; var y = new Number(123); // typeof x renvoie number // typeof y renvoie object
Ne créez pas d'objets numériques. Cela ralentira l'exécution.
new
Le mot-clé complique le code et génère certains résultats imprévisibles :
Lorsque vous utilisez ==
Lorsque vous utilisez l'opérateur égalité, les nombres égaux semblent égaux :
Exemple
var x = 500; var y = new Number(500); // (x == y) est vrai car x et y ont des valeurs égales
Lorsque vous utilisez ===
Après l'opérateur égalité, les nombres égaux deviennent inégaux car ===
Les opérateurs nécessitent que le type et la valeur soient identiques.
Exemple
var x = 500; var y = new Number(500); // (x === y) est faux car les types de x et y sont différents
Même pire. Les objets ne peuvent pas être comparés :
Exemple
var x = new Number(500); var y = new Number(500); // (x == y) est faux car les objets ne peuvent pas être comparés
Les objets JavaScript ne peuvent pas être comparés.
- Page précédente Modèles de chaînes JS
- Page suivante JS BigInt