# Watch Your Rounding in .NET

While working on the Financial Aid Estimator project, which involves a number of calculations, I noticed that I would sometimes receive slightly inaccurate results: an “Asset Contribution” total, for example, might be off by a dollar or two.

I was confused: all of the formulas in the code were correct. And then I noticed something:

```
Math.Round(3.5); // Equals 4
Math.Round(4.5); // Equals 4
```

Intuitively, I expected `3.5`

to round to `4`

and `4.5`

to round to `5`

. Apparently, this behavior is expected: by default, the .NET framework uses the `ToEven`

(also called “Banker’s Rounding”) approach to rounding, where the nearest even number is chosen when a number is between two integers.

You can modify this behavior by explicitly specifying the midpoint rounding behavior:

```
Math.Round(3.5, MidpointRounding.AwayFromZero); // Equals 4
Math.Round(4.5, MidpointRounding.AwayFromZero); // Equals 5
```

As explained in a Stack Overflow answer, this method is actually part of the IEEE 754 standard.