The reason for 0.9... = 1 is that, altough all Real numbers can be represented un an infinite decimal, the same Real can have more than one decimal representation. and 0.9...= 1 is just one of many, for instance, the rational 31/10 has 2 decimal representations: 3.10000... and 3.099999... , in effect if you calculate 10x - x, being x=3.09999... :
So, 9x = 279/10 <=> x = 31/10
Code:
10x = 30.99999...
- x = 3.09999...
----------------------
9x = 27.90000...
So, 9x = 279/10 <=> x = 31/10