On the other hand, for any finite value of N, the sum [1] is equal to 0.9 * (1-(0.1)^N) / (1-0.1) = 1 - (0.1)^N. This value goes to 1 as N goes to ∞.
More rigorously, for any positive value, ε, there is a value N, such that the value of the finite sum is within ε of 1.
For one thing, 1 - 0.999... = 0.000... because you never get to have any remainder since 0.999... is infinite.
Or here's another proof:
x = 0.999...
10x = 9.999...
10x - x = 9.999... - 0.999...
9x = 9.000... = 9
9x = 9
x = 1
9.999.. - 0.999 is 9 no matter how we define .999... just as long as two or more occurrences of the 0.999... notation all denote the same entity, and we understand that the syntax 9.999... is 9 + 0.999...
For example, if we define 0.999... as "rubber duck" then 9.999... stands for 9 + "rubber duck", and 9.999... - 0.999... stands for 9 + "rubber duck" - "rubber duck" = 9.
0.999... * 10 = 9.999...
Because "one less 9 than infinity is still infinity" it's what really closes the loop on the proof.
You can't represent 0.2 exactly using IEEE floats, either, but that doesn't mean the representation 0.2 is not exactly equal to 1/5th.