The most basic question, is how are you representing the non-integer numbers?
The simplest approach for fractional math throughout a program is a fixed-point implementation - eg. I've used 16 bit integer + 16 bit fraction, so 32 bit storage with the "point" in the middle.
Then treat it as a normal integer, but working with units of whatever fraction suits the point position, so 1/65536 for that setup.
Allow 16 bits to the left for multiply and 16 bits to the right for divide for result storage, to make up for the fractional offset that will need byte-shifting to correct the results.
Treat the integers as if multiplied by 65536, so your original division would become 1,179,648 / 268,698
Use however many bits for the integer and fraction parts to get the range and precision you need in your application, eg. 8+8 if that's enough, with units or 1/256
(That was the basis of something I wrote in the early 80s, for machine tool controllers. The measuring systems were resolver based and after conversion gave units of 1/32768 inches, so one "spare" bit in the storage).