Tous les nombres en JavaScript, que ce soit des entiers ou des décimales, sont du numéro de type. À l'intérieur du programme, l'essence du type de nombre est un numéro de point flottant 64 bits, ce qui est cohérent avec le numéro de point flottant du double type en Java; Par conséquent, tous les nombres en JavaScript sont des nombres de points flottants. En suivant la norme IEEE 754 (standard arithmétique du point flottant), la plage de valeurs que JavaScript peut représenter est plus ou moins 1,7976931348623157 fois 10 à la puissance de 308, et le nombre décimal minimum qui peut représenter est plus ou moins 5 fois 10 à la puissance de MINUS 324. Min_value Attribut de l'objet numéro respectivement.
Pour les entiers, selon les exigences de la norme ECMAScript (http://ecma262-5.com/els5_html.htm#section_8.5), la gamme des entiers que JavaScript peut représenter et effectuer des opérations arithmétiques précises est: à la puissance de 53 de plus ou moins 2, c'est-à-dire de la plage de la gamme minimum -90071992547474092 valeur maximale +9007199254740992; Pour les entiers dépassant cette plage, JavaScript peut toujours effectuer des opérations, mais ne garantit pas la précision des résultats du calcul. Il convient de noter que pour les opérations de bits entiers (telles que le décalage et d'autres opérations), JavaScript prend en charge uniquement les numéros entiers 32 bits, c'est-à-dire des entiers de -2147483648 à +2147483647.
expérience
Affiche la valeur absolue du nombre maximum et la valeur absolue du nombre décimal minimum en JavaScript:
La copie de code est la suivante:
console.log (numéro.max_value);
console.log (numéro.min_value);
Les résultats sont 1.7976931348623157E + 308 et 5E-324.
JavaScript ne peut pas donner un résultat de calcul exact pour les entiers en dehors de la puissance de 53 de plus ou moins 2:
La copie de code est la suivante:
var a = 9007199254740992;
console.log (a + 3);
Le résultat de calcul correct doit être le 9007199254740995, mais le résultat de calcul donné par JavaScript est le 9007199254740996. Après avoir tenté de modifier la formule de calcul, vous pouvez constater que tant que le résultat entier sera plus grand que 9007199254740992, les erreurs dans ce résultat de calcul se produiront fréquemment. Si l'écart dans la précision du calcul est acceptable, les conséquences de l'exemple suivant seront encore plus graves:
La copie de code est la suivante:
var max_int = 9007199254740992;
pour (var i = max_int; i <max_int + 2; ++ i) {
// Boucle infinie
}
En raison des problèmes de précision de calcul, ce qui précède pour la déclaration tombera dans une boucle morte.
Pour les opérations de bit, JavaScript prend en charge uniquement les numéros entiers 32 bits:
La copie de code est la suivante:
var smallInt = 256;
var bigint = 2200000000;
console.log (smallInt / 2);
console.log (smallInt >> 1);
Console.log (BigInt / 2);
console.log (bigint >> 1);
On peut voir que pour les entiers à moins de 32 bits (256), JavaScript peut effectuer des opérations de bit correctes, et le résultat est cohérent avec le résultat de l'opération de division (128). Pour les entiers autres que 32 bits, JavaScript peut effectuer des opérations de division correctes (1100000000), mais les résultats obtenus après effectuer des opérations de bit sont loin des résultats corrects (-1047483648).