In my case, I removed the floor in the room above, sealed all the gaps, cracks, joints, and service entries with pink fire foam, and packed mineral wool between the joists. This was because it was a poor-quality chipboard floor with multiple defects. If you are lucky enough to have floorboards, they are fairly easy to take up and replace.
It's possible to do this from below by removing the ceiling, but much slower and more arduous working overhead off steps. For a garage, I believe the ceiling has to be two layers of plasterboard plus skim, but that's a Building Regulations question.
Most of the heat loss through a floor is due to draughts. You can probably seal them reasonably well without taking up the whole floor. They come up round the edges of the room under the skirting, so concentrate on that. Mineral wool blocks draughts because it can be packed tightly into irregular gaps with no precision cutting necessary. Unlike foam slabs. The wool is also non flammable, cheaper, and muffles noise somewhat.
The expanding foam is quick to apply using a gun, if you can see the gaps and clean them first.