Table des matières
Que se passe-t-il lors de la division d'un nombre par zéro en javascript?
Comment gérer BigInt divisé par zéro?
Comment prévenir ou gérer la division par zéro erreur dans JavaScript?
Pourquoi 0 est-il divisé par 0 dans JavaScript nan?
Quelle est la différence entre Nan et Infinity en JavaScript?
Comment vérifier si le résultat en JavaScript est nan?
Comment vérifier si le résultat en JavaScript est Infinity?
Quelle est la signification du nombre primitif en javascript?
Comment gérer de grands nombres en JavaScript?
Qu'est-ce que RangeError en JavaScript?
Maison interface Web js tutoriel Amusant avec les numéros JavaScript

Amusant avec les numéros JavaScript

Feb 24, 2025 am 10:17 AM

Fun with JavaScript Numbers

Points clés

  • Tous les nombres en JavaScript sont représentés en utilisant le type de données de nombre, y compris les entiers, les nombres réels, les nombres hexadécimaux et les nombres de notation scientifique. Cependant, JavaScript représente en interne tous les nombres en tant que nombres de points flottants IEEE 754, ce qui signifie que les mathématiques JavaScript ne sont pas précises à 100%.
  • JavaScript définit un nombre appelé Not-A-Number (NAN) pour représenter les non-chiffres comme des nombres. Nan est la seule valeur numérique en JavaScript qui n'est pas égale à elle-même et peut être testée à l'aide de la fonction isnan ().
  • JavaScript a certaines fonctionnalités, telles que les zéros signées, résultant en des zéros positifs (0) et des zéros négatifs (-0), qui sont considérés comme des valeurs différentes, mais les opérateurs de comparaison de JavaScript ne peuvent pas les distinguer. En JavaScript, la division par zéro produit l'infini et la division par zéro négative produit -Infinity.

Les types de données sont une partie importante de chaque langage de programmation, et les nombres sont peut-être les types de données les plus importants. Après tout, les ordinateurs ne sont vraiment que des calculatrices coûteuses. Comme tout langage de programmation précieux, JavaScript prend en charge les données numériques. Mais, comme de nombreux autres aspects de JavaScript, il y a des nuances dans les nombres qui peuvent vous causer des problèmes si vous ne faites pas attention. Cet article traite des données numériques et de certaines de ses caractéristiques. Remarque: Avant de lire cet article, vous devriez avoir une compréhension de base des types de données JavaScript .

Type de nombre

Dans JavaScript, tous les nombres sont représentés par le type de données de nombre. Cela comprend les entiers, les nombres réels, les nombres hexadécimaux et les nombres représentés par la notation scientifique. L'exemple suivant le vérifie en appliquant le type d'opérateur à divers nombres. Dans cet exemple, chaque application de typeof renvoie un nombre.

typeof(100);
typeof(3.14);
typeof(0xDEADBEEF);
typeof(7.89e2);
Copier après la connexion
Copier après la connexion

Dans l'exemple précédent, les nombres se trouvent dans différents formats. Cependant, en interne, tous les numéros JavaScript sont en fait représentés sous forme de numéros de points flottants IEEE 754. Ceci est important car cela signifie que JavaScript n'a pas le concept d'entiers, bien que la langue ait la fonction parseInt (). Cela signifie également que les opérations mathématiques JavaScript ne sont pas précises à 100%. Par exemple, considérez l'expression suivante.

(0.1 + 0.2) === 0.3
Copier après la connexion
Copier après la connexion

Si vous n'êtes pas familier avec les numéros de points flottants, vous vous attendez certainement à ce que cette expression évalue à TRUE. Après tout, 0,1 0,2 est égal à 0,3. Cependant, en raison du fonctionnement des numéros de points flottants, leur somme est en fait de 0,30000000000000000000004. La différence est petite, mais cela suffit pour faire en sorte que l'expression entière évalue à False.

zéro positif et zéro négatif

Une autre caractéristique de la norme IEEE 754 est le zéro signé. Il en résulte deux zéros - zéro positif, 0 et zéro négatif, -0. Cela peut sembler étrange, mais le plaisir vient de commencer. De toute évidence, ces deux sont des valeurs différentes, sinon il n'y aura qu'un seul zéro. Cependant, si vous montrez l'un de ces deux zéros, le symbole sera supprimé. Par exemple, le code suivant essaie d'afficher ces deux valeurs zéro côte à côte.

typeof(100);
typeof(3.14);
typeof(0xDEADBEEF);
typeof(7.89e2);
Copier après la connexion
Copier après la connexion

Pire, les opérateurs de comparaison de JavaScript semblent également incapables de distinguer les deux valeurs, comme le montre l'exemple suivant.

(0.1 + 0.2) === 0.3
Copier après la connexion
Copier après la connexion

Il existe une solution assez simple à ce problème. En JavaScript, la division par zéro produit une infinité. De même, la division par zéro négative produira -Infinity. Donc, pour déterminer si un nombre est égal à -0, nous devons vérifier s'il est nul, puis utilisez-le comme dénominateur pour la division et vérifiez -infinity comme indiqué ci-dessous.

alert((+0) + " " + (-0));
// 显示 0 0
Copier après la connexion

pas-un nombre (nan)

JavaScript définit en fait un nombre appelé Not-A-Number (NAN). Nan est une fausse valeur utilisée pour représenter les non-chiffres comme nombres. Cette valeur est intéressante car son nom lui-même exclut la possibilité qu'il soit un nombre, mais le type de (nan) est un nombre. Nan est également intéressant car c'est la seule valeur en JavaScript qui ne s'égale pas elle-même. Par exemple, le code suivant retournera faux.

alert((+0 === -0));
// 显示 true
alert((-0 === +0)); // 显示 true
Copier après la connexion

Vous pouvez tester NAN à l'aide de la fonction isnan () au lieu d'utiliser l'opérateur de comparaison comme indiqué ci-dessous.

function isNegativeZero(x) {
  return (x === 0 && (1/x) === -Infinity);
}
Copier après la connexion

Cependant, Isnan () est également intéressant car il peut être trompeur. Si vous transmettez une valeur qui peut être jetée à un nombre, Isnan () reviendra faux. Dans l'exemple suivant, Isnan () est appelé avec plusieurs valeurs qui ne sont évidemment pas numériques. Cependant, chaque appel revient faux.

alert((NaN === NaN));
// 显示 false
Copier après la connexion

Une meilleure façon de vérifier Nan est de profiter du fait qu'elle ne s'égale pas elle-même. La fonction suivante teste NAN en utilisant une inégalité stricte. Cette fonction renvoie vrai uniquement pour la valeur nan.

isNaN(1);
// 返回 false
isNaN(NaN);
// 返回 true
Copier après la connexion

Autres moments amusants

Il existe d'autres situations qui peuvent causer des problèmes avec les chiffres. Premièrement, vous devez être conscient des anciens navigateurs, qui permettent aux propriétés globales telles que Infinity, Nan et indéfinies d'être redéfinies sous forme de nouvelles valeurs. Par exemple, si vous utilisez fréquemment NAN, le code suivant peut causer de nombreux problèmes. Heureusement, les navigateurs modernes ignorent les affectations aux propriétés susmentionnées. Le mode strict va plus loin, convertissant ces défaillances silencieuses en erreurs.

isNaN(true);
isNaN(false);
isNaN("");
isNaN(null);
// 全部返回 false
Copier après la connexion

Une autre erreur de diagnostic intéressante provient de l'ajout de nombres et de chaînes. Un exemple est illustré ci-dessous. Dans ce cas, la concaténation de String remplace l'ajout. Cela fait convertir FOO en la chaîne "100". Le résultat final est la chaîne "1001", qui est très différente de la valeur attendue de 101. Ce type d'erreur est plus courant que vous ne le pensez et se produit souvent lors de la lecture de l'entrée des utilisateurs.

function isNotANumber(x) {
  return x !== x;
}
Copier après la connexion

Conclusion

Cet article traite de certaines des caractéristiques des nombres en JavaScript. J'espère que vous comprenez maintenant comment ces problèmes surviennent et comment les éviter. Et, même si vous ne rencontrez pas souvent des situations comme des zéros négatifs, du moins maintenant vous êtes prêt.

Des questions fréquemment posées sur les numéros JavaScript (FAQ)

Que se passe-t-il lors de la division d'un nombre par zéro en javascript?

Dans JavaScript, lorsque vous divisez le nombre de zéro, le résultat est l'infini. En effet, tout nombre divisé par zéro est mathématiquement indéfini, mais JavaScript le représente comme infini à des fins pratiques. Cependant, si vous divisez zéro par zéro, le résultat est NAN (pas un nombre), car cette opération est incertaine en mathématiques.

Comment gérer BigInt divisé par zéro?

BigInt est un objet intégré en JavaScript qui fournit un moyen de représenter des entiers supérieurs à 2 ^ 53-1, le plus grand nombre que JavaScript peut représenter de manière fiable en utilisant le nombre de primitifs. Si vous essayez de diviser BigInt par zéro, JavaScript lancera un plageerror indiquant que l'opération n'est pas valide.

Comment prévenir ou gérer la division par zéro erreur dans JavaScript?

Vous pouvez utiliser des instructions conditionnelles dans JavaScript pour empêcher ou traiter la division par zéro erreurs en vérifiant si le dénominateur est nul avant d'effectuer l'opération de division. Si le dénominateur est nul, vous pouvez décider comment le gérer, par exemple, renvoyer une valeur spécifique ou afficher un message d'erreur.

Pourquoi 0 est-il divisé par 0 dans JavaScript nan?

En mathématiques, l'expression 0/0 n'est pas définie car elle n'a pas de valeur explicite et définie. En JavaScript, les opérations mathématiques non définies entraînent NAN (pas un nombre). Ainsi, lorsque vous divisez zéro par zéro en javascript, le résultat est nan.

Quelle est la différence entre Nan et Infinity en JavaScript?

Dans JavaScript, Nan (pas un nombre) et l'infini sont des valeurs spéciales. Nan représente une valeur qui n'est pas un nombre juridique, généralement en raison d'opérations mathématiques non définies ou incertaines. Infinity, en revanche, représente un nombre plus grand que n'importe quel nombre possible, généralement en raison de la division du nombre de zéro.

Comment vérifier si le résultat en JavaScript est nan?

Vous pouvez utiliser la fonction isnan () dans JavaScript pour vérifier si le résultat est nan. Si le paramètre est NAN, cette fonction renvoie vrai, sinon faux.

Comment vérifier si le résultat en JavaScript est Infinity?

Vous pouvez utiliser la fonction isfinite () dans JavaScript pour vérifier si le résultat est un numéro fini. Si le paramètre est positif ou négatif, cette fonction renvoie false, autrement vrai.

Quelle est la signification du nombre primitif en javascript?

Le nombre primitif en JavaScript est utilisé pour représenter les valeurs numériques. Il peut représenter les valeurs entières et les nombres de points flottants. Cependant, il ne peut représenter que de manière fiable des nombres jusqu'à 2 ^ 53-1.

Comment gérer de grands nombres en JavaScript?

Pour gérer de grands nombres qui dépassent la limite entière sécurisée JavaScript, vous pouvez utiliser des objets BigInt. Bigint vous permet de représenter des entiers supérieurs à 2 ^ 53-1.

Qu'est-ce que RangeError en JavaScript?

JavaScript lance un plageerror lorsque la valeur n'est pas dans la plage attendue. Par exemple, essayer de diviser BigInt par zéro se traduit par un plageerror.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer et publier mes propres bibliothèques JavaScript? Comment créer et publier mes propres bibliothèques JavaScript? Mar 18, 2025 pm 03:12 PM

L'article discute de la création, de la publication et du maintien des bibliothèques JavaScript, en se concentrant sur la planification, le développement, les tests, la documentation et les stratégies de promotion.

Comment optimiser le code JavaScript pour les performances dans le navigateur? Comment optimiser le code JavaScript pour les performances dans le navigateur? Mar 18, 2025 pm 03:14 PM

L'article traite des stratégies pour optimiser les performances JavaScript dans les navigateurs, en nous concentrant sur la réduction du temps d'exécution et la minimisation de l'impact sur la vitesse de chargement de la page.

Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Apr 04, 2025 pm 02:42 PM

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Comment déboguer efficacement le code JavaScript à l'aide d'outils de développeur de navigateur? Comment déboguer efficacement le code JavaScript à l'aide d'outils de développeur de navigateur? Mar 18, 2025 pm 03:16 PM

L'article traite du débogage efficace de JavaScript à l'aide d'outils de développeur de navigateur, de se concentrer sur la définition des points d'arrêt, de l'utilisation de la console et d'analyser les performances.

Qui est payé plus de python ou de javascript? Qui est payé plus de python ou de javascript? Apr 04, 2025 am 12:09 AM

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

Comment utiliser les cartes source pour déboguer le code JavaScript minifié? Comment utiliser les cartes source pour déboguer le code JavaScript minifié? Mar 18, 2025 pm 03:17 PM

L'article explique comment utiliser les cartes source pour déboguer JavaScript minifiée en le mappant au code d'origine. Il discute de l'activation des cartes source, de la définition de points d'arrêt et de l'utilisation d'outils comme Chrome Devtools et WebPack.

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Apr 04, 2025 pm 05:09 PM

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? Apr 04, 2025 pm 05:12 PM

Discussion approfondie des causes profondes de la différence de sortie Console.log. Cet article analysera les différences dans les résultats de sortie de la fonction Console.log dans un morceau de code et expliquera les raisons derrière. � ...

See all articles