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
etMath.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 deNaN
(2 * "string" / 2
)
Testez vos connaissances
Quel est le résultat de la transmission de false
à Number()
?
Quel est le résultat de l'opération mathématique suivante ?
"Six" * 3