With integers, always do the multiplication first and the division last. The multiplication is a zero error procedure but the division will introduce an error when it rounds down to integer.
so;
percentage = (0x5555 * 100) / 0x8888
will have a lot less error than;
precentage = (0x5555/0x8888) * 100
If the the second number is always the same it is much easier. So if you have a number X in the range 0-255 and you need it as a percentage you can do this;
percent = (X * 100) / 256
Which is good because the division is binary (256) so it will compile very small.
And if you want to minimise the rounding down error, you add half the divisor BEFORE you do the division;
percent = ((X * 100)+128) / 256
That will give you the closest integer rounded result to the actual floating point result, ie has the least error in the result. I've explained it a bit rushed, one of the math guys can probably explain it much better.