1 與 0.999...
啊,又是那個一被提起就容易引起人們爭吵不休踊躍討論的話題啊。不過這件事其實沒有什麼好爭論的空間:1 = 0.999… 無誤。完。
這篇中文維基百科文章提供了非常詳盡的解釋,從數學外行人友善的版本到非常嚴謹的正式數學證明都有。也可以看這部(英文)影片。
總的來說,1 與 0.999… 其實是實數線(集合)上同一個點(元素)的表示法/表示形式(英文:representation),或是更爲簡要地形容:「寫法不同、本質相同」。
Tommy 文章提到的「兩種答案」中,只有第二種的在邏輯上沒有毛病(該方法也有在上述的維基百科文章提到)。
至於他講到的「第一種」的問題在哪裡呢?其實 Tommy 本人在該文章已經講中了:所謂的「0.000…1 早已化為 0」,或者應該說「1 - 0.999… 根本不等於 0.000…1,而是 0 才對」。
真要雞蛋裡挑骨頭的話,就是他用上了像 Google 計算機那樣的電子計算機來「證明」的部分。
這個做法的問題在於:電子計算機本身的限制,使得其無法真正毫無誤差地表示一個實數的無限小數位形式1。因此,用它作爲證明 1 = 0.999… 的直接根據不甚嚴謹。
不用提計算機了,光是「從 1-0.99999999999999999 開始,計算結果即為 0」這句話本身就已經不準確了。癥結點在於 0.99999999999999999 仍然是個有限小數位的數字,所以 1 減去它肯定「還有剩」(不是 0)——確切來說是 0.00000000000000001 = 10^(-17)。
但我們在這裡面對的是一個無限小數位的數字(表示法),所以不能與上述說法相提並論。
其實有個不需要用上計算機的更直觀方法:先把 1 改寫成 1.000…,然後將此減法改成直式(豎式),一切應該就一目瞭然了。
既然 0.999… 的(小)數位是無限在走的,那麼在此減法算式持續進行借位(退位)的過程中,0 的小數點後面自然也會產生無限多的 0,並且永遠不會產生 1(不然 0.999… 就不會是無限小數位了),所以最後減出來的答案必定是 0,從而得出 1 = 0.999…。
如果對無窮幾何/等比級數(通常爲高中數學等級)有點概念的話,應該不難發現上面的東西其實只是 9/10 + 9/100 + 9/1000 + … 「包裝成減法」的版本而已,套用一下無窮幾何級數公式,就能直接得出 1 了。
-
若要更準確來說的話,Google(或應該說是 Google 旗下的 Android)計算機並非純粹地使用浮點數運算,而是使用結合浮點數運算與一個叫作「遞迴性實數運算」的方式的特殊技法,但這不影響本文的論點:電腦仍無法零誤差地儲存無限(小)數位形式的數字。 ↩︎