Il problema di Math.Round()

Problema: Anche se non si può parlare proprio di bug, vorrei risolvere il problema di Math.Round(), davanti al quale mi sono trovato diverse volte:

Console.WriteLine(Math.Round(1.5));
Console.WriteLine(Math.Round(2.5));
Console.ReadLine();

Restituisce 2 in entrambi i casi. E non va assolutamente bene nelle nostre applicazioni dove in generale vogliamo arrotondare alla cifra precedente il numero che termina con 0-4 e alla cifra successiva il numero che termina con 5-9.

Soluzione: Diverse le soluzioni in rete, tutte matematiche. Correggo ciò che avevo scritto precedentemente, grazie al suggerimento di Stefano, per segnalare la presenza di un overload:

Console.WriteLine(Math.Round(1.5, MidpointRounding.AwayFromZero));
Console.WriteLine(Math.Round(2.5, MidpointRounding.AwayFromZero));
Console.ReadLine();

che restituisce il risultato corretto


Technorati tags: