Maison  >  Article  >  interface Web  >  Comprendre BigInt en JavaScript

Comprendre BigInt en JavaScript

WBOY
WBOYoriginal
2024-09-11 06:34:331137parcourir

Understanding BigInt in JavaScript


En JavaScript, les nombres sont traditionnellement représentés à l'aide du type Number, qui adhère à la norme IEEE 754 pour l'arithmétique à virgule flottante double précision. Cette représentation, bien que polyvalente, a une limitation : elle ne peut représenter en toute sécurité des entiers que jusqu'à (2^{53} - 1) (ou (9 007 199 254 740 991)). Pour les applications nécessitant des entiers plus grands, JavaScript introduit une solution via le type BigInt.

Qu’est-ce que BigInt ?

BigInt est un objet intégré en JavaScript qui permet de représenter des nombres entiers plus grands que ceux qui peuvent être gérés par le type Number. Contrairement à Number, qui convient à l'arithmétique à virgule flottante et peut gérer des valeurs comprises entre environ (-1,8 fois 10^{308}) et (1,8 fois 10^{308}), BigInt est conçu spécifiquement pour l'arithmétique entière de précision arbitraire.

Création de valeurs BigInt

Il existe plusieurs façons de créer des valeurs BigInt :

  1. Utilisation du constructeur BigInt :
   const bigIntValue = BigInt(123456789012345678901234567890);

Notez que BigInt accepte les chaînes et les nombres, mais lorsque vous utilisez des nombres, ils doivent être dans la plage d'un type Number.

  1. Utilisation du littéral BigInt : Les littéraux BigInt sont suffixés par un n :
   const bigIntLiteral = 123456789012345678901234567890n;

Il s'agit d'une manière plus concise de définir directement les valeurs BigInt.

Opérations avec BigInt

BigInt prend en charge la plupart des opérateurs arithmétiques standards. Voici un bref aperçu :

  • Ajout (+)
  const a = 10n;
  const b = 20n;
  const sum = a + b; // 30n
  • Soustraction (-)
  const difference = b - a; // 10n
  • Multiplication (*)
  const product = a * b; // 200n
  • Division (/)
  const quotient = b / 3n; // 6n (Note: Division results in a `BigInt` which is truncated towards zero)
  • Module (%)
  const remainder = b % 3n; // 2n
  • Exponentiation (``)**
  const power = a ** 3n; // 1000n

Comparaisons et égalité

BigInt peut être comparé à l'aide des opérateurs de comparaison standard. Notez que les valeurs BigInt et les valeurs Number ne sont pas directement comparables :

const a = 10n;
const b = 10;
console.log(a == b); // false
console.log(a === BigInt(b)); // true

Conversion entre BigInt et Number

La conversion entre BigInt et Number peut être effectuée à l'aide de méthodes de conversion explicites :

  • De BigInt au numéro :
  const bigIntValue = 123n;
  const numberValue = Number(bigIntValue);

Remarque : cela peut perdre en précision si la valeur BigInt est trop grande.

  • Du numéro à BigInt :
  const numberValue = 123;
  const bigIntValue = BigInt(numberValue);

Limites et considérations

  1. Opérations Mixtes : Vous ne pouvez pas mélanger BigInt et Number dans des opérations arithmétiques sans conversion explicite :
   const a = 10n;
   const b = 5;
   // The following line will throw a TypeError
   const result = a + b; 
  1. Support JSON : BigInt n'est pas directement pris en charge dans la sérialisation JSON. Toute tentative de chaîner les valeurs BigInt entraînera une TypeError :
   const bigIntValue = 123n;
   JSON.stringify(bigIntValue); // Throws TypeError

Pour gérer BigInt en JSON, vous devrez peut-être d'abord le convertir en chaîne :

   const bigIntValue = 123n;
   const jsonString = JSON.stringify({ value: bigIntValue.toString() });
  1. Performances : Bien que BigInt offre une précision arbitraire, il peut être plus lent que les opérations sur nombres en raison de la complexité de la gestion des entiers plus grands.

Cas d'utilisation

BigInt est particulièrement utile dans les scénarios où la précision avec de grands entiers est cruciale, tels que :

  • Cryptographie
  • Calculs à grande échelle (par exemple, applications financières)
  • Arithmétique de haute précision dans les calculs scientifiques

Conclusion

BigInt est un ajout puissant à JavaScript, étendant ses capacités de gestion des entiers au-delà des limites du type Number. Comprendre ses opérations, ses limites et ses cas d'utilisation appropriés peut aider à tirer parti de ses avantages pour les applications nécessitant des calculs de grands nombres entiers.


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
Article précédent:Différence entre RSS et RSEArticle suivant:Différence entre RSS et RSE