Arrondir à N chiffres en Javascript

Mai 2013

En Javascript, la fonction Math.round() permet d'arrondir un nombre décimal à l'entier le plus proche, exemple :

Math.round(5.56845)
// 6

Le problème c'est qu'elle ne permet pas d'arrondir à un certain nombre de chiffres après la virgule.

Heureusement il y a une astuce très simple qui permet de calculer un arrondi à N chiffre après la virgule. Pour cela il suffit de multiplier le nombre à arrondir par une puissance de 10, pour "déplacer" la virgule vers la droite.

Voici un petit exemple pour arrondir à 2 chiffres après la virgule : il suffit de multiplier le nombre par 100, de calculer l'arrondi, et de le diviser par 100 pour remettre la virgule à sa place originale :

Allez donc jeter un oeil sur cette page : désactiver la récupération de fichier excel.

var nombre = 5.56845;
arrondi = nombre*100;          // 556.845
arrondi = Math.round(arrondi); // 556
arrondi = arrondi/100;         // 5.56

Fonction round avec précision

Aller, voilà en cadeau une fonction qui permet d'arrondir à N chiffre après la virgule (2 décimales par défaut), en fournissant la précision en second paramètre (optionnel) :

function roundDecimal(nombre, precision){
	var precision = precision || 2;
	var tmp = Math.pow(10, precision);
	return Math.round( nombre*tmp )/tmp;
}

Allez donc jeter un oeil sur cette page : incorporer un modèle 3d dans une photographie.

4 commentaires :
commentaire n°2851 par Kera
Kera lundi 21 juillet 2014, 15:30
Si je peux me permettre, le soucis c'est qu'en fait on n'obtient pas l'arrondi du nombre mais sa troncature : l'arrondi au centième près de 5.56845 n'est pas 5.56 mais 5.57 (5.57 étant plus proche de 5.568 que 5.56).
Ce détail peut poser des problèmes dans les calculs financiers où la norme est d'arrondir les résultats plutôt que de les tronquer.
Sinon la fonction toFixed() ne peut elle pas faire l'affaire?
commentaire n°2944 par Guillaume
Guillaume jeudi 18 décembre 2014, 12:17
Bonjour,

Je passe par là plus ou moins par hasard, car je recherche sur une problèmatique dans le thème. Mais quelle bonne surprise de tombé sur ce genre de code, qu'une simple fonction toFixed réduit à néant.
D'ailleurs, beaucoup trop d'approximation, ce n'est pas un arrondi, c'est l'arrondi arithmétique, très connu en mathématique, mais loin d'être utilisé en informatique ...

http://bit.ly/1sIQ5AF

Le genre de site qui est loin d'aider ...
commentaire n°2960 par Galdon
Galdon dimanche 21 décembre 2014, 17:59
Je ne connais que l'arrondi arithmétique, il existe d'autres formes d'arrondi ?
commentaire n°10348 par fefe
fefe samedi 4 décembre 2021, 09:32
l'arrondi est de 557 pas 556
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré