As I said, scale the numbers - for a simple example, imagine you were doing sums with money? - instead of $123.78 you would use 12378 cents, same value, but an integer and not a float.
You are then stuck with the problem of only 16 bit numbers, you can overcome that by considering how much precision you really NEED. Your calculation is based on an 8 bit value, so the original source is only accurate to three digits (a bit better than 0.5%) - so it's pretty pointless trying to maintain 0.00001% (or whatever?) accuracy in your calculations.
What EXACTLY are you trying to calculate?, it should be possible to simplify the calculation without losing any significant accuracy.