Se è 3,31...perchè non lo lasci così...i centesimi so soldi...:
http://www.youtube.com/watch?v=Vbm3c7GAGks
...a parte gli scherzi...
>Ma il "MidpointRounding.ToEven" non serve proprio a specificare
>che nel caso la 3° cifra sia un 5 il numero deve essere arrotondato
>per difetto?
è una funzione che non conoscevo ed ho cercato di approfondire...tiene conto dell' intero valore/stringa ed appena vede un decimale sopra lo zero fa + 1 sul decimale che lo precede, almeno da quel che ho capito....:
Dim a As Decimal = CDec("3,3057854890")
Dim b As Decimal = CDec("3,3057")
Dim c As Decimal = CDec("3,3051")
Dim d As Decimal = CDec("3,3050")
Dim e As Decimal = CDec("3,3041")
Console.WriteLine(a & " = " & Math.Round(a, 2, MidpointRounding.ToEven))
Console.WriteLine(b & " = " & Math.Round(b, 2, MidpointRounding.ToEven))
Console.WriteLine(c & " = " & Math.Round(c, 2, MidpointRounding.ToEven))
Console.WriteLine(d & " = " & Math.Round(d, 2, MidpointRounding.ToEven))
Console.WriteLine(e & " = " & Math.Round(e, 2, MidpointRounding.ToEven))
puoi verificare notando il risultato del writeline di "c", "d" e "e".
Segui il consiglio di Ridaria o implementa una function per ottenere il risultato che ti serve...
Ciao!