Division is an operation that is defined for real numbers and infinity is not a real number. Therefore, 1/infinity is not equal to 0.
Similarly, other operations are not defined for non real numbers such as exponentiation. You might as well say 1/rabbit=0 or

+ =1/

.
That's the standard comeback but now let's turn to nonstandard analysis to fix what you have.
Let x and y be hyperreal numbers. Denote their infinitesimal closeness by writing x==y. x==y means |x-y|<r for all positive real numbers r.
The main fact your assuming by writing 1/infinity=0 is that IF x and y are real numbers then x==y if and only if x=y in which case |x-y|=0<r for all positive real numbers r.
The second thing you're doing is dividing non real numbers. While in standard real analysis, this makes about as much sense as dividing apples into oranges (both of which are nonreal numbers), you can kind of do this in nonstandard analysis.
Let x be a hyperreal number. x is called unlimited if |y|<|x| for all real numbers y. Then instead of saying 1/infinity=0 here's the correct statement:
1/x==0 for all unlimited x.
If x is unlimited then 1/x is an infinitesimal. An infinitesimal y is a hyperreal number such that y==0.
x^-y = 1/x^y
x*0 = 0
x^infinity = infinity
The second result holds if x is limited and we can say that a noninfinitesimal x raised to an unlimited power is unlimited.
Then do this:
1 - 0.9 = 1 - 9*10^-1 = .1 = 10^-1
1 - 0.09 = 1 - 9*10^-2 = .01 = 10^-2
skip ahead...
0.999~ = 1 - 9 * 10^-infinity = 1 - 9 * 1/10^infinity = 1 - 1/infinity = 1 - 0 = 1
Technically, 0.9999...==1 because 1/x==0 for unlimited x, not =0. But this is ok since for two real numbers x and y, x==y if and only if x=y. Therefore, 0.9...=1.
0.9... is a real number because it is the least upper bound of the set {0.9,0.99,0.999,0.9999,...} which is bounded above by 1. This is part of the definiton of real number.