lundi, août 04, 2008

System.Math.Round les arrondis en .NET

On me demande de réaliser une fonction d'arrondi dites au 4/5eme qui dit :
si le chiffre après l'arrondi est inférieur ou égal à quatre alors on garde la valeur sinon on incrémente de un.
Ce qui donne pour un arrondi à 2 décimales :
1.234 ==> 1.23
1.235 ==> 1.24
1.236 ==> 1.24
...

Pour moi c'est la fonction arrondi par défaut ... donc, je me dit pourquoi pas utiliser Decimal.Round(1.235m,2) et vérifier le résultat.
Surprise, le résultat n'est pas celui attendu ! Cela me retourne : 1.23, car .NET, la fonction arrondie utilisée est la méthode du chiffre paire le plus près et non pas la plus proche ! Voici un petit article sur les arrondis qui m'a aidé a comprendre : arrondi sur wikipédia

Donc pour utiliser l'arrondi au plus près, il faut utiliser la fonction suivante :
Decimal.Round(1.235m, 2,MidpointRounding.AwayFromZero)

Aucun commentaire: