hmm you have to understand my point was that C++ is deterministic language and thus if you read the code then there is pretty clear what will happen.
for example this : "The free support is 0.12 * 10 + 2 = 3 (rounded down)."
most probably means someone found code "freeSupport = 0.12 * cityN + 2" where freeSupport is type of "int", thus "rounding down" but in fact it just means that if you assign float to int the OS just cuts what is behind precision point.
If you would like "rounding up" then you probably would have "freeSupport = 0.12 * cityN + 2 + 1" so you always end on higher number before cutting after precision
Normal rounding then would be done as "freeSupport = 0.12 * cityN + 2 + 0.5".
Other languages have rounding functions (Delphi, Java etc), but C++ doesn't so you have to understand the types and rules for assigning values between those types.
for example this : "The free support is 0.12 * 10 + 2 = 3 (rounded down)."
most probably means someone found code "freeSupport = 0.12 * cityN + 2" where freeSupport is type of "int", thus "rounding down" but in fact it just means that if you assign float to int the OS just cuts what is behind precision point.
If you would like "rounding up" then you probably would have "freeSupport = 0.12 * cityN + 2 + 1" so you always end on higher number before cutting after precision
Normal rounding then would be done as "freeSupport = 0.12 * cityN + 2 + 0.5".
Other languages have rounding functions (Delphi, Java etc), but C++ doesn't so you have to understand the types and rules for assigning values between those types.