Why not use hardware floating point if you want floating point?
Also, you should always translate an object from an unchanging definition, otherwise numerical error will eventually turn a cube into something "notacube", and so on. If you are updating vertice information, you might as well do a single matrix transformation from the original vertices as opposed to the previously generated vertices.
I suppose you could do integer "floating point" though. Have a 360 entry (for 1 degree accuracy) Sine table holding values between -2^20 and 2^20 (-1 and 1) and your vertice values between -2^11 and 2^11 then multiply and shift the result right by 20 places to get the translated position.