All mathematics is definitional. Imagine you had three numbers, i, j, and k, such that i*i = j*j = k*k = -1, but i != j != k. Also, i * j = k, j * k = i, k * i = j. Finally, they anticommute: j * i = -k, k * j = -i, i * k = -j. So what does that mean? Well, it turns out that it provides a nice representation of three-dimensional transformations. It's referred to as quaternions.
In the standard definition of rational or real numbers, there is no difference between 0.999... and 1. They are the same number. This may conflict with intuitive feelings about how arithmetic works - these intuitive feelings, however, do not define real numbers as used by mathematicians. They're their own mathematical system, that may or may not be consistent or useful.
I don't see why 0.999... being the output of a limit is a concern. The value is well-defined. What other way could you possibly define it?
|
||||||||||||||||||||
I don't really like the 0.33333... * 3 = 0.99999... = 1 = 1/3 * 3 "proofs" because they assume various things about how multiplication is defined in regards to something like 0.99999.... To prove 0.999...=1 you first need to define what you mean by 0.999.... Some intuitive ways to define this might be the limit of the sequence 9/10+9/100+9/1000+..., or perhaps 'the smallest real number that is bigger than 1-(1/10)^n for every n'. From both these definitions it follows that 0.999... is a limit which equals 1.
However, one might feel cheated by the above proofs as well, since it seems as though defining 0.999... to be a limit is kinda 'cheating'. This is actually a valid concern. Ultimately the decision to define 0.999... as a real number seems mostly related to convenience of notation and intuition gained by long division. There's nothing saying that in some obscure arithmetical system one might find that there is in fact a difference between 0.999... and 1.
For these reasons it's kind of hard to demonstrate 0.999...=1 to someone who is only working with his/her arithmetical intuition. It's simply convention of definition. What we can do instead is justify, without any awkward assumptions, the intuition behind the definition: there is no obvious way to explain in what ways the intuitive sizes of 0.999... and 1 are different. 0.999... is bigger than every finitely long number of the form 0.(...). And yet it's obviously not bigger than 1. A careful analysis of these two claims shows that reasonably, the difference between 0.999... and 1 should be defined as 0 (or 0.000....1, but hopefully you will agree this number might also be defined as 0).
But the thing is, again, it's ultimately convention and convenience. Unless you're in the unlikely situation where you actually need to concretely define what 0.999... means... which certainly won't happen when you're programming games... you don't need to care what it means. Round it up, round it down, kill it with fire, whatever works for you.