Movement and positioning isn't in integer values. I might be standing at 520.6 420.8 28.1 in the Start map atrium. And it only prints like that because the printf statement uses %5.1f or whatever, if you used %5.3f to print it no doubt you'd find it has more precision.
Then you have the angles issue.
Or the fact that all vectors in Quake ... vec3_t is an array of float[0] float [1] and float [2] and is used everywhere for entity positioning and physics.
And vector math and lerping uses floats and the engine abounds in float returning functions (sin, cos, tan, sqrt and friends).
You *could* make the engine use all integer data types by enhancing the precision by using a scale instead of 1, of something like 10,000 and get fairly good precision [this would be a mammoth undertaking].
But then you get to the point that floats are used in the save games formats, the map formats, model formats and you won't be able to avoid float returning functions.
Keep in mind
QuakeC uses floats and string and vectors. You have to alter the QuakeC compiler and the progs intepreter stuff too.
In short (you know, the data type

) .. it isn't "impossible impossible". It is the slightly more possible neighbor next door to impossible impossible.