Je souhaite formater mes chiffres pour toujours afficher 2 décimales, en arrondissant le cas échéant.
Exemples:
number display
------ -------
1 1.00
1.341 1.34
1.345 1.35
J'utilise ceci:
parseFloat(num).toFixed(2);
Mais il s'affiche 1
comme 1
plutôt que 1.00
.
Réponses:
Démo en direct
Afficher l'extrait de code
Notez qu'il arrondira à 2 décimales, donc l'entrée
1.346
reviendra1.35
.la source
1
afficher en tant que1.00
, et1.341
afficher en tant que1.34
.(+num).toFixed(2)
. Il conserve même le bug d'arrondi dans l'original, voir la réponse de Nate .Afficher l'extrait de code
la source
1.34
expressionNumber(1.345).toFixed(2)
.1.345
est un exemple d'un nombre qui ne peut pas être stocké exactement en virgule flottante, donc je pense que la raison pour laquelle il ne s'arrondit pas comme vous vous attendez, c'est qu'il est en fait stocké sous forme de nombre légèrement moins de 1,345 et il arrondit vers le bas. Si vous testez à la place avec(1.34500001).toFixed(2)
alors vous voyez qu'il arrondit correctement jusqu'à1.35
Cette réponse échouera si
value = 1.005
.Comme meilleure solution, le problème d'arrondi peut être évité en utilisant des nombres représentés en notation exponentielle:
Code plus propre comme suggéré par @Kon, et l'auteur original:
Vous pouvez ajouter
toFixed()
à la fin pour conserver le point décimal, par exemple:1.00
mais notez qu'il reviendra sous forme de chaîne.Crédit: Arrondir les décimales en JavaScript
la source
toFixed
problème d'arrondi. Votre réponse doit être acceptée.Number(Math.round(parseFloat(value + 'e' + decimalPlaces)) + 'e-' + decimalPlaces)
la source
toPrecision
formate uniquement le nombre en un nombre spécifique de décimales, en omettant simplement les espaces redondants, mais sans les arrondir . Bien sûr, cela pourrait être très utile, mais il est important de comprendre la différence.(20.55).toPrecision(3) "20.6"
toFixed
:const formattedVal = Number(val.toFixed(2));
ne l'utilisez pastoPrecision
, car il compte les nombres non décimaux lors de l'utilisation du paramètre de précision.Pour l'arrondi le plus précis, créez cette fonction:
et l'utiliser pour arrondir à 2 décimales:
Merci à Razu , cet article et la référence Math.round de MDN .
la source
Pour les navigateurs modernes, utilisez
toLocaleString
:Spécifiez une balise locale comme premier paramètre pour contrôler le séparateur décimal . Pour un point, utilisez par exemple les paramètres régionaux anglais des États-Unis:
qui donne:
La plupart des pays européens utilisent une virgule comme séparateur décimal, donc si vous utilisez par exemple les paramètres régionaux suédois / suédois:
cela donnera:
la source
Réponse la plus simple:
Exemple: http://jsfiddle.net/E2XU7/
la source
toFixed
a déjà été suggéré dans stackoverflow.com/a/13292833/218196 . Quelles informations supplémentaires votre question fournit-elle?toFixed
à un numéro.Une solution beaucoup plus générique pour arrondir à N endroits
la source
roundN(-3.4028230607370965e+38,2)
retourne"-3.4028230607370965e+38"
au lieu de 0,00 attenduhttps://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat
la source
Si vous utilisez déjà jQuery, vous pouvez envisager d'utiliser le plugin jQuery Number Format .
Le plugin peut renvoyer des nombres formatés sous forme de chaîne, vous pouvez définir des séparateurs décimaux et des milliers, et vous pouvez choisir le nombre de décimales à afficher.
Vous pouvez également obtenir le format de nombre jQuery à partir de GitHub .
la source
C'est ce que tu veux dire?
la source
Convertissez un nombre en chaîne, en ne conservant que deux décimales:
Le résultat de n sera:
la source
Cherchez-vous un sol?
la source
la source
Voici également une fonction générique qui peut mettre en forme n'importe quel nombre de décimales:
la source
Lorsqu'un formatage spécifique est requis, vous devez écrire votre propre routine ou utiliser une fonction de bibliothèque qui fait ce dont vous avez besoin. La fonctionnalité de base ECMAScript est généralement insuffisante pour afficher des nombres formatés.
Une explication approfondie de l'arrondi et du formatage est disponible ici: http://www.merlyn.demon.co.uk/js-round.htm#RiJEn règle générale, l'arrondi et la mise en forme ne doivent être effectués qu'en dernière étape avant la sortie. Cela peut entraîner des erreurs inattendues et détruire la mise en forme.
la source
la source
Il suffit de courir dans celui-ci du fil le plus long, voici ma solution:
Faites-moi savoir si quelqu'un peut percer un trou
la source
Afficher l'extrait de code
la source
parseFloat(num.toFixed(2))
Vous ne nous donnez pas l'image complète.
javascript:alert(parseFloat(1).toFixed(2))
affiche 1,00 dans mes navigateurs lorsque je le colle dans la barre d’emplacement. Cependant, si vous lui faites quelque chose par la suite, il reviendra.la source
la source
J'ai dû choisir entre les conversions parseFloat () et Number () avant de pouvoir appeler toFixed (). Voici un exemple d'une entrée utilisateur de mise en forme numérique post-capture.
HTML:
Gestionnaire d'événements:
Le code ci-dessus entraînera une exception TypeError. Notez que bien que le type d'entrée html soit "nombre", l'entrée utilisateur est en fait un type de données "chaîne". Cependant, la fonction toFixed () ne peut être invoquée que sur un objet qui est un nombre.
Mon code final ressemblerait à ceci:
La raison pour laquelle je préfère lancer avec Number () vs parseFloat () est parce que je n'ai pas à effectuer de validation supplémentaire ni pour une chaîne d'entrée vide, ni pour la valeur NaN. La fonction Number () gérerait automatiquement une chaîne vide et la convertirait à zéro.
la source
J'aime:
Arrondissez le nombre avec 2 décimales, puis assurez-vous de l'analyser avec
parseFloat()
pour renvoyer Number, pas String, sauf si vous ne vous souciez pas s'il s'agit de String ou Number.la source
parseFloat("1.00") // 1
Étendre un objet Math avec une méthode de précision
la source
parseInt(number * 100) / 100;
travaillé pour moi.la source
voici une autre solution pour arrondir uniquement en utilisant le plancher, ce qui signifie que le montant calculé ne sera pas supérieur au montant d'origine (parfois nécessaire pour les transactions):
la source
Vous pouvez essayer ce code:
la source
Essayez le code ci-dessous:
la source
la source
Voici comment je résous mon problème:
la source