286 votes

Comment éviter la notation scientifique pour les grands nombres en javascript?

Javascript convertit une grande INT en notation scientifique lorsque le nombre devient grand. Comment puis-je empêcher cela?

Merci!

178voto

outis Points 39377

Il y a Nombre.toFixed, mais il utilise la notation scientifique si le nombre est >= 1e21 et a une précision maximum de 20. Autre que cela, vous pouvez rouler votre propre, mais il sera en désordre.

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

Ci-dessus utilise à bon marché-'n'-simple chaîne de redoublement ((new Array(n+1)).join(str)). Vous pouvez définir String.prototype.repeat à l'aide de Paysan russe Multiplication et l'utiliser à la place.

Sinon, vous pouvez utiliser un BigInt de la bibliothèque.

-7voto

RaulQ Points 11

J'ai eu le même problème avec Oracle renvoyant la notation scientifique, mais j'avais besoin du nombre réel pour une URL. Je viens d'utiliser une astuce PHP en soustrayant zéro et j'obtiens le nombre correct.

par exemple 5.4987E7 est le val.

 newval = val - 0;
 

newval est maintenant égal à 54987000

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X