My best guess as to what is going on is that the variable number is of type Float. Due to the reduced precision available as compared to Double, the Float is storing number as 16552.224609375, which will be rounded down to 16552.22 by Round2(). Try Log(number) before your apply Round2() to see what it looks like. If this is, indeed, the case, then you'll be better off storing your numbers as Doubles, rather than Floats. The tiny memory savings are rarely worth it.
The Round2(16552.225,2) will return a Double of value 16552.23 so long as the first argument is of type Double.