Question 148

Comment fonctionne la fonction Round() ?

La fonction Round() est utilisée pour arrondir un nombre décimal à une valeur approchée, avec le nombre de décimales voulu. En particulier, la fonction Round() peut être utilisée pour retourner un nombre entier, si on spécifie 0 (zéro) comme nombre de décimales.

La méthode utilisée par Visual Basic est la méthode dite de "l'arrondi au prochain entier pair", encore appelée "arrondi statistique" ou "arrondi bancaire". Le fonctionnement de Round() dépend donc de la valeur de la partie décimale de la valeur à arrondir. Voici les 3 cas possibles :

  • Une valeur ayant une partie décimale supérieure à 0.5 est arrondie au prochain entier si elle est positive, et à l'entier inférieur si elle est négative (en d'autres termes, elle est arrondie en s'éloignant de 0).
  • Une valeur avec une partie décimale inférieure à 0.5 est arrondie à l'entier inférieur si elle est positive, et supérieur si elle est négative (en d'autres termes, elle est arrondie en se rapprochant de 0).
  • Une valeur ayant une partie décimale exactement égale à 0.5 est arrondie selon la règle de l'arrondissement "au prochain entier pair" : Une telle valeur est obtenue en observant la partie entière du nombre considéré. Si elle est paire, on garde cette valeur. Si elle est impaire, on incrémente de 1. Ainsi, Round(2.5) = 2, car 2 est pair; au contraire, Round(3.5) = 4, car 3 étant impair, on ajoute 1.
Le choix fait pour VB d'implémenter cet algorithme d'arrondissement au prochain entier pair est classique, c'est le plus répandu et le plus efficace notamment en statistique.
Quelques exemples
Cas 1 : Partie décimale supérieure à 0.5
Round(4.76 , 0) = 5
Round(-3.54, 0) = -4

Cas 2 : Partie décimale inférieure à 0.5
Round(8.23 , 0) = 8
Round(-7.42, 0) = -7

Cas 3 : Partie décimale exactement égale à 0.5
Round(1.5 , 0)= 2
Round(2.5 , 0)= 2
Round(3.5 , 0)= 4
Round(4.5 , 0)= 4
Round(5.5 , 0)= 6
Round(6.5 , 0)= 6
On voit bien avec ces exemples que la valeur arrondie pour tous ces cas est toujours un nombre pair.
Alternatives
Si le fonctionnement de Round() tel qu'il est implémenté par VB ne convient pas, rien n'empêche de définir sa propre fonction Round(), en la dotant des propriétés adaptées à son propre usage. Par exemple, on peut définir une fonction qui aura les même caractéristiques que Round(), mis à part pour la cas ou la partie décimale vaut 0.5, auquel cas la fonction arrondira au plus proche entier supérieur; Cette méthode est dite "arrondi commun". Voici une implémentation possible pour cette fonction :

Public Function MyRound(ByVal v As Double, ByVal dec As Integer) As Double
   
    MyRound = Int((v * (10 ^ dec)) + 0.5) / (10 ^ dec)
End Function

Cet article de la KB Microsoft contient l'implémentation d'un grand nombre de fonctions d'arrondi: Comment impémenter ses propres fonctions "Arrondi"
Liens utiles

Remarque : Il ne faut pas confondre cette fonction qui est une fonction mathématique et qui calcule un résultat numérique avec Format$() qui est une fonction de formatage.

Date de publication : 25 février 2007
Dernière modification : 25 février 2007
Rubriques : Math
Mots-clés : arrondi, round, approximation, entier, pair, calcul