Looking over this thread again there seems to be a lot of uncertainty about when and why the spacecode deals with decimal numbers and not. Now, it's very important to understand how the space code works, because I wouldn't want to see any future fixes that makes a bigger mess out of the space code than there already is. So I'll do my best to explain some of these things.
From a player's point of view all coordinates are whole numbers. They never see any decimal parts at all. This is why it's perfectly fine to only accept integer type numbers from player input. Typically the decimal part is truncated like this:
ch_printf( ch, "Coordinates: %.0f %.0f %.0f", x, y, z );
But they ARE floats internally, and they must remain so for the vector calculations to work. Here's an exerpt from ship_data:
float vx, vy, vz;
float hx, hy, hz;
float jx, jy, jz;
As has been mentioned the variable names are a bit obscure. So: vx, vy, vz represents the current position of the ship. I suppose the 'v' is supposed to mean vector or something. hx, hy, hz represents the heading (direction). jx, jy, jz are used for hyperjumps, and represents the position you'll arrive at in the target starsystem.
Note that there is no vector for "destination" within your current starsystem. So when you use the course/trajectory command(s) it is the heading vector that is altered. This is why you can't use integers. Because whenever the move_ships() function calculates the new position of your ship, it uses the heading and the speed. Now, if the heading was stored as integers you would lose much precision, and you'd be unlikely to actually end up where you wanted to go. In short, the code doesn't move you towards a destination, it moves you along a vector.
There are many problems already with the vector math used in the space code. In some cases the formulas are simply wrong (like in most distance calculations). And there are inconsistencies. Missile movement doesn't work the same way as ship movement, for instance, although it would likely simplify many things if they did.
Back to user input/output. There is no real reason why a player should be able to use decimal numbers. In all cases I can think of the code operates with a certain distance. For instance you start to orbit a planet when you get at a distance of 10 or less. You can land when you're within 200. Etc. Furthermore you'll always head straight for a planet if you feed its coordinates to do_trajectory(), because planets store their coordinates using integers (which, again, wouldn't be my first choice). The only time the player would actually need such precision is to ram another ship (because they have positions in floats, remember?). But in the case of SWRFUSS ship collision has been commented out anyway. And if you wanted to allow decimal input, you'd also have to display decimal output to the player. Wouldn't make sense otherwise.
I hope that clarifies some things. Or perhaps I've just made it look even more obscure. *shrug*