讨论总结:
根据我以上的证明,以及大家的讨论,包括引用链接中的讨论,可以看出这个问题的本质。并非1.999是否等于2的问题,而是一个无穷小量,是否等于0的问题。
1.999=2-10^(-n),这里的后半部分包含了一个无穷小量。所有认为1.9999=2的人,默认了这样一个前提,即:无穷小等于0。
借用某楼引用的维基百科中的说法:
尽管如此,许多人们仍常感到怀疑,而提出进一步的辩解,这经常是由于存在不少对数学实数错误的观念等的背后因素(参见以下教育中遇到的怀疑一章节),例如认为每一个实数都有唯一的一个小数展开式,以及认为无限小(无穷小)不等于0,并且将0.999…视为一个不定值,即该值只是一直不断无限的微微扩张变大,因此与1的差永远是无限小而不是零,因此“永远都差一点”。我们可以构造出符合这些直观的数系,但是只能在用于初等数学或多数更高等数学中的标准实数系统之外进行,的确,某些设计含有“恰恰小于1”的数,不过,这些数一般与0.999…无关(因为与之相关的理论上和实践上都皆无实质用途),但在数学分析中引起了相当大的关注。
---------------------------------------------------
请注意,无穷小的建立,只能在“用于初等数学或多数更高等数学中的标准实数系统之外进行”。实数本身是一个有限概念,其中不包括运动过程,而无穷小则是描述运动的过程,而不是一个静止的数。因此,再借用维基百科中的话:
考虑到以上的收敛数列,我们可以证明这个差的大小一定是小于任何一个正数的,也可以证明(详细内容参见阿基米德性质),唯一具有这个性质的实数是零。由于差是零,可知 1 和 0.999…是同一数,用相同的理由,也可以解释为什么“

”;而该等式乘上3倍后成为“0.999… = 1”。
------------------------------------------------------
请注意,“唯一具有这个性质的 实 数 是零。”也即,在实数范围内讨论,由于实数只表述运动的结果,在实数中,只有完成的无穷小,因此,这个无穷小,只能是0。
然而一个很简单的例子就可以说明,你用计算机是无论如何无法精确计算1/9的。这将导致的是无限循环,程序内存溢出。要进行计算,你只能对其取极限,令所有的无穷小都等于0。
这种过程,请允许我用简单粗暴来形容。因为对于无穷小来说,会有1/n^2是1/n的高阶无穷小的研究,而在实数领域内,你无法进行如此的研究,因为他们都等于0。这个0比那个0更加高阶,这是没有意义的。
所以,我在这里可以说,在实数范围内讨论无穷小是没有意义的,因为实数定义已经将无穷小全部取极限了。这也就导致了,实数虽然可以如此处理无穷小,但是对于无穷大,那是毫无办法。依稀记得,依据广义相对论得来的公式里,有着大量的无穷大。有些数学家简单的将无穷大在分数线上下约去,引起了极大争议。数学手段满足了计算,却失去了对其物理意义的探索。
在此,再次引用某楼给出的链接中的话:
0.999... 既可以代表把无限个分数加起来的过程,也可以代表这个过程的结果。许多学生仅仅把 0.999... 看作一个过程,但是 1 是一个数,过程怎么会等于一个数呢?这就是数学中的二义性⋯⋯他们并没有发现其实这个无限的过程可以理解成一个数。
--------------------------------------------
是的。当将无穷小过程理解为一个“数”,或者一个“结果”的话,它要等于0。如果不是如此,你无法计算。也即,为了满足计算的方便,我们必须抹去其过程。就好象,在工程数学里,其实书本里的所有那些令人头疼的代数运算,最终都变成一个个简单的结果公式。你只要背下这些公式,就可以得到满分。因为这些结果公式,与用0代替无穷小,或者用2代替1.99999一样,是这些过程的低阶近似。在处理精度不高的问题时,这些公式最方便。
这就好像,大学生使用泰勒公式,高中生使用牛顿公式,都是直接将最后的无穷小余项忽略的。
因此,我再次尝试终结此帖,在实数范围内,1.9999=2。