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:

Print | posted @ domenica 6 aprile 2008 17:08

Comments on this entry:

Gravatar # re: Il problema di Math.Round()
by Stefano Ottaviani at 06/04/2008 18:46

Math.Round ha degli overload per specificare il MidpointRounding, il valore AwayFromZero credo sia quello che t'interessa
Comments have been closed on this topic.