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