Question

Comme vous le savez, car il est l'un des sujet le plus demandé sur, je rencontre des problèmes avec des erreurs d'arrondi (il est en fait des erreurs, je suis bien conscient). Au lieu d'expliquer mon point, je vais vous donner un exemple de ce nombre possible, je l'ai et quelle entrée je veux être en mesure d'obtenir:

Le mot Let

var a = 15 * 1e-9;
alert(a)

sorties

1.5000000000000002e-8

Je veux être en mesure d'obtenir 1.5e-8 à la place, mais je ne peux pas simplement multiplier par 10E8, rond et diviser par 10E8 parce que je ne sais pas si ce sera e-8 ou e-45 ou quoi que ce soit d'autre.

Donc, fondamentalement, je veux être en mesure d'obtenir la partie 1.5000002, appliquer toFixed(3) et remettre la partie exposant.

Je pourrais convertir en une chaîne et analyse syntaxique, mais il ne semble pas juste ...

Toute idée?


(je présente mes excuses à l'avance si vous pensez que c'est l'un des nombreux doublons, mais je ne pouvais pas trouver une question similaire, ceux liés uniquement)

Gael

Était-ce utile?

La solution

Vous pouvez utiliser la méthode toPrecision :

var a = 15 * 1e-9;
a.toPrecision(2); // "1.5e-8"

Autres conseils

Si vous faites des travaux scientifiques et la nécessité de ronde chiffres significatifs à l'esprit: Arrondi à un nombre arbitraire de chiffres significatifs

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top