A rational number can always be expressed as a ratio of two integers. But I don't require that abstruce fact. In computers, all numbers happen to be rational numbers. But I'm considering ALL numbers in the range 0 to 1 inclusive, even irrational ones, as the abstract concept.
I represent a player's skill as a number from 0 to 1, let's call this a Portion. 0 is the lowest possible value, and 1 is the highest. It represents what portion of the maximum skill the player has achieved. For the 'walking' skill, 0 might map to 3 kph and 1 might map to 15 kph, so this range is abstract and used for it's mathematical properties. When a player skills up from Portion(0.1), the formula for skilling up is to take the skill that they don't have: (1 - 0.1) (the "deficit"), and multiply this by the skill up amount (e.g. 0.003), then add the product to their current skill. skill += (1-skill) * increase. In this way, as players advance, they skill up slower and slower and can never exceed the maximum skill of 1.0. Multiple things in my game use this kind of math, skills, skill increases, etc, so it needed a type, and I found naming that type to be the hardest naming problem I have yet encountered.