Precision loss in calculation

It is doing the division as an integer before it is converted into a float. therefore the result of this division is always less than 1 so is being translated to zero before being multiplied by 100.
Make all variables float or cast them as float in the expression.

Arduino doesn't handle floats very efficiently

No hardware support true but as efficiently as any other 8 bit micro.