Let me explain in detail why your scheme is flawed. I'll only use a minimum amount of math, promise.
The hotel manager uses the technique of "announcing numbers" for two entirely different reasons. Sometimes, announcing a number
removes an occupant from a room and does not specify where they go. Other times, announcing a number
shifts occupants to successive rooms. But, imporantly, these algorithms are not the same.
But it's worse than that. Each of these algorithms only works for a tiny set of numbers. Consider a hotel with occupants in just the first two rooms (0.99). Only
two rational numbers can be announced which shift occupants to new rooms : 0.891 and 0.081. And only
three rational numbers remove occupants without shifting : 0.9, 0.09, and 0.99. But the set of rational numbers is infinite, so this cannot be the operation of subtraction defined for the rationals. For example, announcing 0.783 is meaningless, but subtracting 0.783 is perfectly valid.
You have mistaken the manager's actions for subtraction because your technique of announcing numbers just happens to give the same results as subtraction in
these 5 cases. And you still had to give different processes for 0.891 and 0.081 on the one hand and 0.9, 0.09, and 0.99 on the other to force the outcomes to match subtraction.
In order for your technique to correspond with subtraction, you would need to describe a single algorithm that could handle all rational inputs. And
then show a contradiction.
Crucially, announcing 0.89[...] and announcing 0.9 in the infinite hotel are NOT identical. One shifts occupants, the other removes the occupant in room 1 without specifying their destination. Interestingly, both leave the hotel in the same state : 0.09[...]
Remember, a broken watch tells the correct time twice a day.