I always feel obligated to step in on this and point out: there is no official way to round numbers.
Yes, in school, most people are taught to round upwards if the target decimal place is 5 or greater. This is adequate for most computations but it has a problem in the world of financial calculation and gambling: it has a bias for rounding up. There are 0.49999… values that round down and 0.5000…1 values that round up.
Banks and casinos do not like a biased rounding algorithm. They would instead prefer one that rounds down as frequently as it rounds up. It turns out the vast majority of software is more interested in being something like a bank or a casino than “doing what is easy to teach people”. So “Banker’s Rounding” is very common in software. In this rounding scheme, a number is always rounded to the nearest even integer. That means:
- 0.5 rounds downwards to 0.
- 1.5 rounds upwards to 2.
This sets things up such that over “the range of integers” there is a negligibly small bias, if any.
This is how rounding works by default in C#, the language in which GoW is implemented. You have to go out of your way to get “nearest integer” rounding, which is what you claim is “not broken”. But neither algorithm is broken. In fact, the rounding you want is less fair: it means the CPU is going to get a tiny percent more mana, too.
There are tradeoffs when choosing a rounding technique. There is never a totally right way to do it. Personally I prefer Banker’s Rounding because if you are gambling (and GoW is mostly gambling) it keeps the odds more even.