recherche
Maisoninterface Webjs tutorielAmusant avec les numéros JavaScript

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

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

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

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

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

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

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

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

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

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

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

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
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
Remplacer les caractères de chaîne en javascriptRemplacer les caractères de chaîne en javascriptMar 11, 2025 am 12:07 AM

Explication détaillée de la méthode de remplacement de la chaîne JavaScript et de la FAQ Cet article explorera deux façons de remplacer les caractères de chaîne dans JavaScript: le code JavaScript interne et le HTML interne pour les pages Web. Remplacer la chaîne dans le code JavaScript Le moyen le plus direct consiste à utiliser la méthode Remplace (): str = str.replace ("trouver", "remplacer"); Cette méthode remplace uniquement la première correspondance. Pour remplacer toutes les correspondances, utilisez une expression régulière et ajoutez le drapeau global G: str = str.replace (/ fi

Créez vos propres applications Web AjaxCréez vos propres applications Web AjaxMar 09, 2025 am 12:11 AM

Vous voici donc, prêt à tout savoir sur cette chose appelée Ajax. Mais qu'est-ce que c'est exactement? Le terme Ajax fait référence à un regroupement lâche de technologies utilisées pour créer un contenu Web interactif dynamique. Le terme Ajax, inventé à l'origine par Jesse J

10 JQUERY FUN ET PLIGINS DE GAMES10 JQUERY FUN ET PLIGINS DE GAMESMar 08, 2025 am 12:42 AM

10 plugins de jeu JQuery amusants pour rendre votre site Web plus attrayant et améliorer l'adhérence des utilisateurs! Bien que Flash soit toujours le meilleur logiciel pour développer des jeux Web occasionnels, JQuery peut également créer des effets surprenants, et bien qu'il ne soit pas comparable aux jeux Flash Pure Action, dans certains cas, vous pouvez également vous amuser inattendu dans votre navigateur. jeu jquery tic toe Le "Hello World" de la programmation de jeux a désormais une version jQuery. Code source JQUERY Crazy Word Composition Game Il s'agit d'un jeu de remplissage, et il peut produire des résultats étranges en raison de ne pas connaître le contexte du mot. Code source Jeu de balayage de la mine jQuery

Tutoriel JQuery Parallax - Contexte d'en-tête animéTutoriel JQuery Parallax - Contexte d'en-tête animéMar 08, 2025 am 12:39 AM

Ce tutoriel montre comment créer un effet de fond de parallaxe captivant à l'aide de jQuery. Nous allons construire une bannière d'en-tête avec des images en couches qui créent une profondeur visuelle étonnante. Le plugin mis à jour fonctionne avec jQuery 1.6.4 et plus tard. Télécharger le

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.

Commencer avec Matter.js: IntroductionCommencer avec Matter.js: IntroductionMar 08, 2025 am 12:53 AM

Matter.js est un moteur de physique du corps rigide 2D écrit en JavaScript. Cette bibliothèque peut vous aider à simuler facilement la physique 2D dans votre navigateur. Il fournit de nombreuses fonctionnalités, telles que la capacité de créer des corps rigides et d'attribuer des propriétés physiques telles que la masse, la zone ou la densité. Vous pouvez également simuler différents types de collisions et de forces, tels que la frottement de gravité. Matter.js prend en charge tous les navigateurs grand public. De plus, il convient aux appareils mobiles car il détecte les touches et est réactif. Toutes ces fonctionnalités font de votre temps pour apprendre à utiliser le moteur, car cela facilite la création d'un jeu ou d'une simulation 2D basé sur la physique. Dans ce tutoriel, je couvrirai les bases de cette bibliothèque, y compris son installation et son utilisation, et fournir un

Rafraîchissement automatique du contenu div utilisant jQuery et AjaxRafraîchissement automatique du contenu div utilisant jQuery et AjaxMar 08, 2025 am 12:58 AM

Cet article montre comment actualiser automatiquement le contenu d'un div toutes les 5 secondes à l'aide de jQuery et Ajax. L'exemple récupère et affiche les derniers articles de blog d'un flux RSS, ainsi que le dernier horodatage de rafraîchissement. Une image de chargement est en optiona

See all articles

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)
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

SublimeText3 version Mac

SublimeText3 version Mac

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

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles