en JavaScript, la manière typique d'arrondir un nombre à N décimales est quelque chose comme:
function roundNumber(num, dec) {
return Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
}
Cependant, cette approche arrondira à un maximum de N décimales alors que je veux toujours arrondir à N décimales. Par exemple, «2,0» serait arrondi à «2».
Des idées?
toFixed()
( developer.mozilla.org/En/Core_JavaScript_1.5_Reference/… ), mais c'est bogué dans IE: stackoverflow.com/questions/661562/… ; vous devrez écrire votre propre version ...Réponses:
Ce n'est pas un problème d'arrondi, c'est un problème d'affichage. Un nombre ne contient pas d'informations sur les chiffres significatifs; la valeur 2 est la même que 2.0000000000000. C'est lorsque vous transformez la valeur arrondie en une chaîne que vous lui faites afficher un certain nombre de chiffres.
Vous pouvez simplement ajouter des zéros après le nombre, quelque chose comme:
(Notez que cela suppose que les paramètres régionaux du client utilisent le point comme séparateur décimal, le code a besoin de plus de travail pour fonctionner pour d'autres paramètres.)
la source
toFixed()
du remplissage des décimales à la fin, après arrondi?1.02449999998.toFixed(4)
revient correctement1.0245
.Je pense qu'il y a une approche plus simple à tout donné ici, et c'est la méthode
Number.toFixed()
déjà implémentée en JavaScript.écrivez simplement:
etc...
la source
toFixed()
renvoie une chaîne.J'ai trouvé un moyen. Voici le code de Christoph avec un correctif:
Lisez les détails de la répétition d'un caractère en utilisant un constructeur de tableau ici si vous êtes curieux de savoir pourquoi j'ai ajouté le "+ 1".
la source
Il y a toujours une meilleure façon de faire les choses.
Je voudrais obtenir une précision à quatre chiffres: 51,94
fais juste:
le résultat sera: 51,94
la source
Méthode d'arrondi de type PHP
Le code ci-dessous peut être utilisé pour ajouter votre propre version de Math.round à votre propre espace de noms qui prend un paramètre de précision. Contrairement à l'arrondi décimal dans l'exemple ci-dessus, cela n'effectue aucune conversion vers et à partir de chaînes, et le paramètre de précision fonctionne de la même manière que PHP et Excel où un 1 positif arrondirait à 1 décimale et -1 arrondirait aux dizaines.
à partir de la référence Mozilla Developer pour Math.round ()
la source
J'espère que le code fonctionne (n'a pas fait beaucoup de tests):
la source
Je pense que la fonction ci-dessous peut aider
utilisation:
roundOff(600.23458,2);
retournera600.23
la source
Cela fonctionne pour arrondir à N chiffres (si vous voulez simplement tronquer à N chiffres, supprimez l'appel Math.round et utilisez celui Math.trunc):
J'ai dû recourir à une telle logique à Java dans le passé lorsque je créais des composants E-Slate de manipulation de données . C'est depuis que j'ai découvert qu'en ajoutant 0,1 plusieurs fois à 0, vous vous retrouveriez avec une partie décimale étonnamment longue (cela est dû à l'arithmétique en virgule flottante).
Un commentaire utilisateur au format numéro pour toujours afficher 2 décimales appelle cette technique de mise à l'échelle.
Certains mentionnent qu'il y a des cas qui ne sont pas arrondis comme prévu et à http://www.jacklmoore.com/notes/rounding-in-javascript/, c'est suggéré à la place:
la source
Si vous ne vous souciez pas vraiment de l'arrondi, ajoutez simplement un toFixed (x), puis supprimez les 0 de fin et le point si nécessaire. Ce n'est pas une solution rapide.
la source
format(1.2, 5)
et obtenu1.2
, alors que je m'y attendais1.20000
.