J'ai besoin d'arrondir par exemple 6.688689
à 6.7
, mais ça me montre toujours 7
.
Ma méthode:
Math.round(6.688689);
//or
Math.round(6.688689, 1);
//or
Math.round(6.688689, 2);
Mais le résultat est toujours le même 7
... Qu'est-ce que je fais mal?
javascript
rounding
Vitalii Ponomar
la source
la source
(6.688689).toFixed(1);
.toFixed
renvoie une chaîne. Assurez-vous d'envelopper le résultatNumber()
. Voir réponse acceptée et autres.Réponses:
la source
Number((456.1235).toFixed(3)) -> 456.123
,Number((1.235).toFixed(2)) -> 1.24
... Stupid JavaSript ...la source
Math.round(1.005*100)/100
par exemple de MDN1.005 * 100 = 100.49999999999999
(au moins dans le moteur JS que j'ai essayé). C'est pourquoi cela ne fonctionne pas et pourquoi vous ne devriez jamais compter sur des flotteurs parfaitement précis.Utilisez la
toFixed()
fonction.la source
Mise à jour (2019-10). Merci au code Reece Daniels ci-dessous maintenant disponible sous la forme d'un ensemble de fonctions emballées dans le paquet npm -round attendu (jetez un œil).
Vous pouvez utiliser la fonction d'assistance de l' exemple MDN . Vous aurez alors plus de flexibilité:
Mise à jour (2019-01-15). Il semble que les documents MDN n'aient plus ces fonctions d'assistance. Voici une sauvegarde avec des exemples:
Exemples d'utilisation:
la source
Un
Number
objet en JavaScript a une méthode qui fait exactement ce dont vous avez besoin. Cette méthode estNumber.toPrecision([precision])
.Tout comme avec
.toFixed(1)
elle, le résultat est converti en chaîne et doit être reconverti en nombre. Fait en utilisant le+
préfixe ici.repère simple sur mon ordinateur portable:
la source
1e-10.toPrecision(3)
: "1.00e-10" - ceci arrondit à des chiffres significatifs .Si vous souhaitez non seulement utiliser
toFixed()
mais aussiceil()
etfloor()
sur un flotteur, vous pouvez utiliser la fonction suivante:Produit:
UPD:
L'autre voie possible est la suivante:
Produit:
la source
Ma fonction ronde étendue:
Exemple de sortie:
la source
Voir ci-dessous
var original = 28.59;
var result=Math.round(original*10)/10
vous rendra des retours28.6
J'espère que c'est ce que vous voulez ..
la source
la source
Je pense que cette fonction peut aider.
la source
Je pense que la fonction ci-dessous peut aider
utilisation:
roundOff(600.23458,2);
reviendra600.23
la source
si vous êtes dans le contexte node.js, vous pouvez essayer mathjs
la source
Il existe l'alternative .toLocaleString () pour formater les nombres, avec beaucoup d'options concernant les paramètres régionaux, le regroupement, le formatage des devises, les notations. Quelques exemples:
Arrondissez à 1 décimale, renvoyez un flottant:
Arrondissez à 2 décimales, formatez-la en tant que devise avec le symbole spécifié, utilisez le groupe de virgules pour des milliers:
Format en devise locale :
Arrondir au minimum à 3 décimales, forcer les zéros à afficher:
Style en pourcentage pour les ratios. Entrée * 100 avec signe%
la source
la source
J'ai une très bonne solution avec si toFixed () ne fonctionne pas.
Exemple
la source
Si vous utilisez Browserify aujourd'hui, vous allez devoir essayer: roundTo une bibliothèque NPM très utile
la source
Petit ajustement à cette réponse :
la source
roundToStep(1.015, 0.001)