Every frame, I want an object to move a percentage of the way from where it is to its target. A value of 1 means it reaches the target in exactly one frame, and a value of 0.5 means in one frame it has gone 0.5 way to its target, the next frame 0.75, etc.

(diagram stolen from this similar question)
Since we are moving at fixed frames (not infinitesimals), barring floating-point precision, the object will never reach the target.
The code for this is easy. Here it is in C# pseudocode:
void onEveryFrame() {
currentX += (targetX - currentX) * speed;
}
The problem is, How do I make this frame-rate independent?
So someone running at 30 frames per second will see the object move at about the same speed as someone running at 60 frames per second?
Just divide your desired speed by the framerate:
currentX += (targetX - currentX) * speed / framerate;You may want to increase the speed constant to compensate for this division. For example, if you've tested this on 30 FPS before, now write a 30 times higher speed. The division by the framerate will cancel this factor out. If you are doing 60 FPS, you will be doing it twice as often, but half as fast. And so on.