Nombres JavaScript

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

Essayez-le vous-même

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

Essayez-le vous-même

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

Essayez-le vous-même

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

Essayez-le vous-même

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

Essayez-le vous-même

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)

Essayez-le vous-même

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)

Essayez-le vous-même

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)

Essayez-le vous-même

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)

Essayez-le vous-même

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;

Essayez-le vous-même

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;

Essayez-le vous-même

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

Essayez-le vous-même

Cet exemple fonctionnera également ainsi :

var x = "100";
var y = "10";
var z = x * y;       // z sera 1000

Essayez-le vous-même

Cet exemple fonctionne ainsi :

var x = "100";
var y = "10";
var z = x - y;      // z sera 90

Essayez-le vous-même

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)

Essayez-le vous-même

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)

Essayez-le vous-même

Cependant, si la chaîne contient des valeurs numériques, le résultat sera un nombre :

Exemple

var x = 100 / "10";     // x sera 10

Essayez-le vous-même

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

Essayez-le vous-même

soyez prudent NaN. Si vous utilisez des opérations mathématiques NaNalors le résultat sera également NaN:

Exemple

var x = NaN;
var y = 5;
var z = x + y;         // z sera NaN

Essayez-le vous-même

le résultat peut être une concaténation :

Exemple

var x = NaN;
var y = "5";
var z = x + y;         // z sera NaN5

Essayez-le vous-même

NaN est un nombre,typeof NaN retourne number:

Exemple

typeof NaN;             // Retourne "number"

Essayez-le vous-même

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;
}

Essayez-le vous-même

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

Essayez-le vous-même

Infinity est un nombre :typeOf Infinity retourne number.

Exemple

typeof Infinity;        // Retourne "number"

Essayez-le vous-même

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.

Essayez-le vous-même

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

Essayez-le vous-même

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

Essayez-le vous-même

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

Essayez-le vous-même

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

Essayez-le vous-même

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

Essayez-le vous-même

Les objets JavaScript ne peuvent pas être comparés.