Pouvez-vous arrondir un nombre en javascript à 1 caractère après le point décimal (correctement arrondi)?
J'ai essayé le * 10, rond, / 10 mais ça laisse deux décimales à la fin de l'int.
javascript
rounding
Marcheur
la source
la source
Math.round(n * 10) / 10
fonctionne. Quel est ton code?Réponses:
Math.round(num * 10) / 10
fonctionne, voici un exemple ...si vous voulez qu'il ait une décimale, même si ce serait un 0, alors ajoutez ...
EDIT: Ajouter un rond avec une fonction de précision ...
En utilisant ce principe, pour référence, voici une petite fonction ronde pratique qui prend de la précision ...
... utilisation ...
... par défaut, arrondir au nombre entier le plus proche (précision 0) ...
... et peut être utilisé pour arrondir au 10 ou 100 le plus proche, etc. ...
... et traitement correct des nombres négatifs ...
... et peut être combiné avec toFixed pour formater de manière cohérente sous forme de chaîne ...
la source
.toFixed()
car il renvoie une chaîne lorsque vous voulez peut-être un nombre.parseFloat
supprimera les décimales laissées par.toFixed()
s'il s'agit d'un nombre entier (zéros). Généralement, si vous voulez faire le calcul, il est préférable de suivre votre premier exemple. Si vous souhaitez afficher un numéro dans votre interface utilisateur, utilisez.toFixed()
..toFixed()
car il pourrait renvoyer des résultats d'arrondi différents pour différents navigateurs. Lisez cet article pour plus de détails sur le sujet!la source
toFixed()
des problèmes - je l'ai vu dans un navigateur Chrome où j'appelletoFixed()
, puis je le convertis en chaîne, et cela montre quelque chose comme10.00000000068
- bizarre. Je ne peux cependant pas reproduire cela de manière fiable..toFixed()
car il renvoie unString
quand vous voulez peut-être unNumber
Si vous utilisez,
Math.round(5.01)
vous obtiendrez5
au lieu de5.0
.Si vous utilisez,
toFixed
vous rencontrez des problèmes d' arrondi .Si vous voulez le meilleur des deux mondes, combinez les deux:
Vous voudrez peut-être créer une fonction pour cela:
la source
lodash
a uneround
méthode:Docs .
Source .
la source
Je vote pour
toFixed()
, mais, pour mémoire, voici une autre façon qui utilise le décalage de bits pour convertir le nombre en entier. Donc, il arrondit toujours vers zéro (vers le bas pour les nombres positifs, vers le haut pour les négatifs).Mais bon, puisqu'il n'y a pas d'appels de fonction, c'est méchant vite. :)
Et voici celui qui utilise la correspondance de chaînes:
Je ne recommande pas d'utiliser la variante de chaîne, disons simplement.
la source
Essayez avec ceci:
moins compliqué et plus facile à mettre en œuvre ...
avec cela, vous pouvez créer une fonction pour faire:
Afficher l'extrait de code
EDIT : voir ce Comment arrondir à l'aide de ROUND HALF UP. Mode d'arrondi que la plupart d'entre nous ont appris à l'école primaire
la source
x = nombre, n = décimales:
la source
Pourquoi pas
la source
la source
Pour compléter la meilleure réponse:
Le numéro du paramètre d'entrée peut "pas" toujours être un nombre, dans ce cas .toFixed n'existe pas.
la source
Version ES 6 de la réponse acceptée:
la source
Utilisation de la méthode toPrecision:
la source
12.345.toPrecision( 2 )
est"12"
.Si votre méthode ne fonctionne pas, veuillez poster votre code.
Cependant, vous pouvez accomplir la tâche d'arrondi comme suit:
Vous donnera 234,56
De même
Donnera 234,5
De cette façon, vous pouvez utiliser une variable à la place de la constante comme utilisé ci-dessus.
la source
Petit filtre angulaire si quelqu'un le veut:
utiliser si via:
:)
la source
En général, l'arrondi se fait par mise à l'échelle:
round(num / p) * p
L'utilisation de la notation exponentielle gère correctement l'arrondi des nombres + ve. Cependant, cette méthode ne parvient pas à arrondir correctement les cas de bord.
Ici, est également une fonction que j'ai écrite pour effectuer l'arrondi arithmétique, vous pouvez le tester vous-même.
la source
Cela semble fonctionner de manière fiable sur tout ce que je lui lance:
Il arrondit, vous devrez donc peut-être le modifier en fonction du cas d'utilisation. Cela devrait fonctionner:
la source
Si vous vous souciez d'arrondir correctement, alors:
Sinon, si vous ne l'avez pas, vous avez déjà une réponse des messages précédents
la source
Math.round( num * 10) / 10
ne fonctionne pas.Par exemple,
1455581777.8-145558160.4
vous donne1310023617.3999999
.Alors n'utilisez que
num.toFixed(1)
la source
J'en ai fait un qui renvoie le type de nombre et place également des décimales uniquement si nécessaire (pas de remplissage 0).
Exemples:
Le code:
la source
J'ai trouvé un moyen d'éviter les problèmes de précision:
la source
Merci
la source