Keep in mind that if 100.505 is being entered by a user into a Number field, it is only represented as an approximation of that value in binary form. What you're probably seeing is that the actual binary representation is equivalent to 100.5049999 - which when rounded gets converted to 100.50.
OPA takes care of this for you when doing comparisons (e.g. a rule that says the value >= 100.505 will work, even if the value = 100.505). But when rounding an existing value for display, OPA can't help with that.