I’d first convert to `Decimal`

and then use `Math.Round`

on the result. This conversion is not strictly necessary, but I always feel a bit uneasy if I round to decimal places while using binary floating points.

```
Math.Round((Decimal)f, 3, MidpointRounding.AwayFromZero)
```

You should also look into the choice of `MidpointRounding`

, since by default this uses Banker’s round, which is not what you are used to from school.