/ / Comment obtenir un résultat entier précis pour les opérations arithmétiques de grands nombres dans JS? - javascript

Comment obtenir un résultat entier précis pour les opérations arithmétiques de nombres énormes dans JS? - javascript

Comment obtenir un résultat entier précis pour multiplication et division opérations d'un grand nombre dans JS?

Disons que nous avons:

var a = 75643564363473453456342378564387956906736546456235342;
var b = 34986098309687982743378379458582778387652482;

Multiplier ces nombres me donne un nombre en notation scientifique «e». Comment afficher le nombre entier de résultat entier précis?

J'ai essayé d'utiliser cette bibliothèque https://github.com/peterolson/BigInteger.js

Readme dit:

Notez que les nombres Javascript supérieurs à 9007199254740992 et plus petit que -9007199254740992 ne sont pas représentés précisément chiffres et ne produira pas de résultats exacts. Si vous avez affaire à nombres en dehors de cette plage, il vaut mieux passer des chaînes.

Mais comment faites-vous des mathématiques avec des chaînes?

Réponses:

3 pour la réponse № 1

Utilisez bigInt, comme vous l'avez laissé entendre, vous devez utiliser des chaînes au lieu de nombres pour les représenter correctement.

bigInt("75643564363473453456342378564387956906736546456235342").multiply("34986098309687982743378379458582778387652482");

-1 pour la réponse № 2

Je pense que cette question est une duplication de comment éviter la notation scientifique pour les grands nombres en javascript

Cette fonction est tirée du lien ci-dessus.

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

alert(toFixed(a*b));