There is no reason this can't be done using integers - I've done it many times with ADC and they only have 0-9999 available. As Aaron said, you just have to watch your decimal places and use a rollover register. I usually have my rollover at 1,000, 1,000,000 and so on, but you can suit your needs with any increment you want.
You can certainly use a subroutine, but I'd avoid trying to do the totalizing to every scan. You will end up with very small increments and loose a lot of data. Unless you have very fast changes and need incredible accuracy it isn't worth it. If you are doing custody transfer applications an external dedicated totalizer is probably better.
I usually use a timer to go to the subroutine, and put the increment at 10 seconds or so. Take a "snapshot" flow rate reading, multiply it by the timer setting, and get the units right. (If flow rate is gpm or cubic meters per hour for flow mean you have to do some conversion.)
Implicit in the totalizing function is the assumption that the flow rate when you take a snapshot reading the rate has been constant for the entire time interval. That is never true, of course, but on the average it doesn't matter because statistically the times you are high are offset by the times you are low.