Module Module1
Public Sub Main()
Dim values() As Double = {43.523, 12.65, 43.565}
For Each value As Double In values
Console.WriteLine("{0} --> {1}", value, Math.Round(value, 2))
Next
Console.ReadLine()
End Sub
End Module
The above code results as
43.523 --> 43.52
12.65 --> 12.65
43.565 --> 43.56
I need 43.565 --> 43.57 and not 43.565 --> 43.56. But i still need the other 43.523 --> 43.52 and 12.65 --> 12.65 rounded as is.
Firstly, if exact decimal values are of concern to you, you should consider using
Decimal
instead ofDouble
. In particular, 43.565 isn't exactly representable as aDouble
to start with.However, if you want to specify the behaviour for "midpoints" (i.e. where it could reasonably round up or down), use the overload with a
MidpointRounding
parameter: