Numbers

Une valeur numérique est composée d'une série de caractères numériques, par exemple:

5

Le type de données numériques inclut également quelques propriétés globales spéciales qui représentent des concepts numériques tels que Infinity et NaN : une valeur « pas un nombre », le résultat potentiel d'une tentative d'exécution des calculs sur des valeurs qui ne sont pas des nombres.

Objet numérique

Lorsqu'une valeur est transmise à la fonction Number(), elle est convertie en le nombre équivalent. Par exemple, une chaîne numérique donne un résultat primitive numérique:

Number( "10" );
> 10

La transmission d'une valeur false ou null à Number() renvoie 0, et true renvoie 1

Number( null );
> 0

Number( false );
> 0

Number( true );
> 1`

Si une valeur ne peut pas être convertie, comme undefined ou une chaîne contenant des caractères non numériques, la fonction Number renvoie NaN:

Number( undefined );
> NaN

Number( "The number 3." );
> NaN

Comme détaillé dans la section sur l'héritage des prototypes, vous n'aurez probablement aucune raison d'utiliser l'objet Number comme , car il crée un objet Number au lieu d'un littéral numérique.

let numObject = new Number( 15 );

numObject;
> Number { 15 }

Cet objet se comporte comme la valeur qui lui a été attribuée pour les opérations mathématiques, mais il échoue aux comparaisons d'égalité strictes avec les littéraux numériques, car les types de données ne correspondent pas, sans fournir d'avantage pratique par rapport à une valeur littérale.

let tenObject = new Number( 10 );

tenObject + 5;
> 15

tenObject === 10;
> false

Floats et entiers

JavaScript ne comporte qu'un seul type de nombre: IEEE 754-1985 à double précision 64 bits. nombres à virgule flottante compris entre -2^1024 et 2^1024. Avant que JavaScript ne stocke un nombre en mémoire, il doit d'abord convertit ce nombre en nombre binaire à virgule flottante, également appelé nombre à virgule flottante.

Ce stockage de 64 bits (un bit « signe » positif ou négatif, 11 bits pour une et 52 bits pour une fraction) peuvent entraîner des erreurs de précision, quel que soit le nombre. de chiffres qui n'entrent pas dans une plage autorisée. Cette limitation est inhérente au type de données numériques de JavaScript.

0.1 + 0.7
> 0.7999999999999999

À la place, la valeur numérique peut être stockée sous la forme d'un entier (nombre à virgule flottante). sans fraction comprise entre -(2^53 − 1) et 2^53 − 1. Parce que les flotteurs et les entiers sont stockés de la même manière fondamentale, il n'y a aucune différence pratique dans le fonctionnement de ces chiffres. Toutefois, nous vous recommandons d'utiliser des nombres entiers pour éviter les erreurs de précision.

Opérateurs numériques

Lorsque vous utilisez des opérateurs mathématiques standards avec des primitives numériques, le ordre des opérations mathématique s'applique: toute expression placée entre parenthèses est évaluée en premier, suivie de exposants, multiplication, division, addition et soustraction.

Opérateur Nom Description Utilisation Résultat
+ Ajout 2+2 4
- Soustraction 4-2 2
* Multiplication 2*5 10
/ Division 10/5 2
++ Incrément Ajoute un à un nombre 2++ 3
-- Diminuer Soustrait un d'un nombre 3-- 2
** Exposant Renvoie le résultat de la génération de la première
. opérande à la puissance du deuxième opérande.
2**4 16
% Reste Renvoie le reste restant lorsque
le premier opérande est divisé par le deuxième opérande.
12%5 2

Vous pouvez également utiliser des opérateurs d'affectation mathématique pour effectuer une sur la valeur d'une variable et l'attribuer immédiatement la valeur nouvellement calculée à la variable.

Opérateur Nom Utilisation
+= Attribution de l'ajout myValue += 2
-= Attribution de soustraction myValue -= 2
*= Attribution de multiplication myValue *= 2
/= Attribution de la division myValue /= 2
**= Attribution de l'exposant myValue **= 2
%= Affectation restante myValue %= 2

Valeurs symboliques

La primitive de nombre s'applique également à quelques cas particuliers : (NaN) et une valeur représentant l'infini qui peut être positive (Infinity) ou négative (-Infinity).

Vous risquez de rencontrer Infinity rarement en raison de la division par zéro, un cas pour lesquels la plupart des langages de programmation génèrent une erreur:

10 / 0
> Infinity

N'oubliez pas que JavaScript est sensible à la casse. Infinity est un type de données numériques représentant le concept d'infini, mais infinity n'a pas de signification particulière:

Infinity
> Infinity

infinity
> Uncaught ReferenceError: infinity is not defined

NaN (signifiant Pas un nombre) apparaît plus fréquemment, lorsque le résultat d'une opération arithmétique ne peut pas être exprimée sous la forme d'un nombre. Par exemple, JavaScript tente d'inférer à partir de la valeur et du contexte, un littéral de chaîne ne contenant qu'un nombre peut être utilisée dans une opération mathématique:

"2" * 2;
> 4

Cependant, si cette chaîne ne peut pas être analysée en tant que valeur numérique, la fonction mathématique n'est pas un nombre:

"two" * 2;
> NaN

NaN est renvoyé dans tous les cas où une valeur non valide est représentée sous forme de nombre dans une opération mathématique. Voici quelques exemples :

  • Échec des conversions de nombre (par exemple, parseInt( undefined ))
  • Les opérations arithmétiques dont le résultat n'est pas un nombre réel (par exemple, 0 / 0 et Math.sqrt( -10 ))
  • Opération arithmétique dont le résultat est indéterminé (0 * Infinity)
  • Une opération arithmétique qui inclut un élément NaN explicite (NaN + 2) ou un résultat de NaN (2 * "string" / 2)

Testez vos connaissances

Quel est le résultat de la transmission de false à Number() ?

0
Faux
NaN
1

Quel est le résultat de l'opération mathématique suivante ?

"Six" * 3

NaN
2
18
Vrai
0