this one helps. To answer the question from your title:

2.135 is not always rounded(using 2 decimals) to 2.13, this just happens in your case because you are using a binary floating point data type. (As

leppie pointed out, 2.135 cannot be represented accurately as a double, please note also that

Microsoft seems to disinguish between decimal and floating point types, even though decimal also fits the definition)

```
decimal val1 = 2.135m;
decimal val2 = 3.135m;
Console.WriteLine("decimal val1({0}) rounded = {1}", val1, Math.Round(val1, 2));
Console.WriteLine("decimal val2({0}) rounded = {1}", val2, Math.Round(val2, 2));
double dval1 = 2.135;
double dval2 = 3.135;
Console.WriteLine("double val1({0}) rounded = {1}", dval1, Math.Round(dval1, 2));
Console.WriteLine("double val2({0}) rounded = {1}", dval2, Math.Round(dval2, 2));
```