Réduire le nombre de décimales
En AS3, à partir d'une division-je obtenir un numéro comme celui-ci: 0.9130406010219044.
Est-il possible de réduire le nombre de décimales (en dehors de multiplier ce nombre par million)? Est-il un moyen pour réduire le nombre AVANT d'effectuer la division?
Vous devez vous connecter pour publier un commentaire.
Ai la fonction suivante à partir de ce lien, qui arrondit un nombre arbitraire de décimales:
Note: j'ai légèrement modifié la définition de la fonction par l'ajout de types. Voir le lien pour les explications et le code source d'origine. Aussi fait-il de retour
theNumber
sidecPlaces
est inférieure ou égale à zéro.Math.round(EVAL_NUMBER * 100) / 100;
est de loin la méthode la plus rapide, la seconde est latrim
méthode ci-dessus, suivie partoFixed
et de loin la plus lente est la méthode impliquantsubstr
(qui d'ailleurs n'est pas ronde et ne fonctionne pas si vous avez plus d'un chiffre avant la virgule). Toutes les méthodes testées en exécutant la même expression d'un million de fois.Math.round(..)
méthode est d'environ 23 fois plus rapide que lasubstr
méthode et environ dix fois plus rapide que l'utilisationtoFixed
.AS3 Documentation: Nombre de classe
myNumber = Number(myNumber.toFixed(2));
Si vous voulez juste pour afficher le résultat (vous n'avez pas à spécifier) puis un peu simple de manipulation de Chaîne donnera le plus rapide résultat:
Prendre un coup d'oeil à NumberFormatter.fractionalDigits
Ou, si vous travaillez dans Flex: mx:NumberFormatter.précision /s:NumberFormatter.fractionalDigits
Essayer quelques-uns des réponses ici sur pour taille:
La façon de traiter avec précision dans le code Actionscript?
Si vous utilisez un NumberFormatter, assurez-vous de spécifier l'arrondissement (il est plus probable que vous aurez envie la plus proche).
Si vous avez besoin de Numéro de résultat et de performance, je dirais que cette solution est plus efficace que les Mathématiques.pow()
Si vous avez besoin de 3 décimales, il suffit de changer 100 par 1000.
démontrant l'arrondissement :
Ce qui concerne le Nombre.toFixed() retourne une Chaîne je suppose que c'est parce qu'il renvoie 2 décimales dans tous les cas:
Par exemple :