Maison > interface Web > js tutoriel > Comment empêcher JavaScript de convertir de grands entiers en notation scientifique dans des chaînes ?

Comment empêcher JavaScript de convertir de grands entiers en notation scientifique dans des chaînes ?

Barbara Streisand
Libérer: 2024-12-10 08:59:10
original
687 Les gens l'ont consulté

How to Prevent JavaScript from Converting Large Integers to Scientific Notation in Strings?

Notation scientifique pour les grands entiers en JavaScript

JavaScript convertira les entiers de plus de 21 chiffres en notation scientifique dans un contexte de chaîne. Si vous devez imprimer un entier dans le cadre d'une URL, comment empêcher la conversion ?

Solution

JavaScript fournit la méthode Number.toFixed, mais si le nombre est supérieur ou égal à 1e21 avec une précision allant jusqu'à 20, il utilisera la méthode scientifique notation. Sinon, vous pourriez le mettre en œuvre vous-même, mais ce serait compliqué.

function toFixed(x) {
  if (Math.abs(x) < 1.0) {
    var e = parseInt(x.toString().split('e-')[1]);
    if (e) {
        x *= Math.pow(10,e-1);
        x = '0.' + (new Array(e)).join('0') + x.toString().substring(2);
    }
  } else {
    var e = parseInt(x.toString().split('+')[1]);
    if (e > 20) {
        e -= 20;
        x /= Math.pow(10,e);
        x += (new Array(e+1)).join('0');
    }
  }
  return x;
}
Copier après la connexion

La méthode ci-dessus utilise une répétition de chaîne simple et bon marché ((new Array(n 1)).join(str)). Vous pouvez également définir String.prototype.repeat par-dessus et utiliser la multiplication paysanne russe.

Veuillez noter que cette réponse s'applique uniquement à l'affichage de grands nombres sans utiliser la notation scientifique. Dans tout autre cas, vous devez utiliser une bibliothèque BigInt telle que BigNumber, Leemon's BigInt ou BigInteger. De plus, un nouveau BigInt natif sera bientôt disponible, pris en charge par Chromium et les navigateurs basés sur Chromium (Chrome, nouveau Edge [late v79], Brave) et Firefox, avec prise en charge en développement pour Safari.

Voici comment convertir à l'aide de BigInt : BigInt(n).toString()

Exemple :

const n = 13523563246234613317632;
console.log("toFixed (wrong): " + n.toFixed());
console.log("BigInt (right):  " + BigInt(n).toString());
Copier après la connexion

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal