数を表すために広く十進記数法が用いられる関係から、任意の実数をその十進小数展開によってとらえることがよく行われる。そしてそのような枠組みの中で循環小数 0.999...によって表される実数というものを考えることができるが、これはまったく完全に寸分の違いもなく 1 に等しい。つまり、"0.999..." という記号は "1" という記号が表すのとまったく同じ数を表現しているということである。この数が2通りの表現を持っているというように言い換えることもできる。このことの証明は、どの程度数学的に厳密であるかということまで含めて、種々の仕方で定式化することができる。ただし、それは目的や場合に応じて、実数の概念の取り扱いであるとか、背景になっている仮定であるとか、歴史的な文脈であるとか、あるいは一体どういった聴衆を想定するかなどといった主題に沿って好ましいものが選び取られるということを意識する必要がある。
この 1 = 0.999... という等式は長きにわたり教科書にも記され、「等しくないはず」と信じてやまない学生・生徒たちに「等しい」と理解し受け入れてもらうためにはどのように教えればいいのか、といったようなことが数学教育という観点から研究もされてきた。ここで「等しくない」とする人々のいう理由というのは典型的に実数に対するいくつかの一般的な誤解に基づくものである。それは例えば、「一つの小数表示は必ず一つの実数に一意的に一対一対応していなければならない」といった思い込みであったり、「どんな実数よりも小さな無限小という量が(それが四則演算や大小関係との間に齟齬を来すとしても)存在するはずである」という期待であったり、極限という概念が理解できないかあるいは単に思い込みだけで「いくら 9 が無限に続いても、そこには最後の 9 というものがあるはずだ」と言ったり、といったものを典型として挙げることができる。これらの考えというのは、こと実数の体系の中で考えるとするならば誤っている。それは有理数から実数を構成することによって明示的に示されることであり、またそのような実数の構成というものは 1 = 0.999... をも直接に証明してしまう。しかしもちろんそれと同時に、実数とはまったく異なるいくつかの数体系ではこれらの直感的な感覚が真であるようなことも起こりうる。実際に合理的に "0.999..." と呼ぶことのできる対象があって、それが厳密に 1 よりも小さいような体系さえあるのである。
1 の小数展開が二種類あるというのは何も十進法に特有の現象ではなく、十以外の整数を基数とする位取りで表しても同じことが起きる。一方、数学者たちは非整数を基数として 1 を書き表す方法を定量的に取り扱ってきた。またこの表示の二重性は 1 に特有のことでもなく、零でないすべての有限小数が(これは有限小数を無限小数として表現すると途中からずっと 0 の続く無限小数、たとえば1.000...となることを意味する)、途中からずっと 9 の無限に続く無限小数を双子の片割れとして持っている。実際のところ、すべての位取りに基づく記数法がこのような表示の曖昧さを持つ数を無限に含んでいるのである。このように基数を取り替えて同じものを様々に表示することは、分数の小数展開や、さらに数学的に発展させると簡単なフラクタルであるカントール集合などが持っているパターン構造をよりよく理解するために応用することもでき、実数全体の成す無限集合の古典的な研究の一部を成しているのである。
0.999... は十進法で書かれた数であり、これが 1 に等しいという最も単純な証明のいくつかは、この記数法の便利な算術的性質に依存している。 十進小数のほとんどの計算(加法、減法、乗法、除法、大小比較)が整数の場合と同じ "桁レベルの操作" により為されている。また、整数の場合と同様に、ある桁が異なる任意の2つの有限小数は(あとに 0 がずっと続く場合を無視して)異なる数を表す。特に、"0.999...9" と表される任意の数(9 が有限個続いているだけのもの)は厳密に 1 より小さい。
省略記号 "..." の意味は厳密に特定されなければならない。ここでの "..." の用法は、言語もしくは 0.999...9 における "..." の用法とは異なる。後者の用法は、有限 な部分を明言しなかったり省略したりする用法である。循環小数に対して用いるときには、"..." はある無限 な部分を明言しないことを意味する。特に、0.999... は数列 {0.9, 0.99, 0.999, 0.9999, ...} の極限(これは、k= 1, 2, 3, ..., ∞ に対し 9 × 0.1k の形をしたすべての項の和に等しい)を表している。0.999... の誤った解釈は、これが 1 に等しいことに関する誤解の原因となる。
等式 0.999... = 1 の証明はいろいろある。これを代数的に示す前に、『2つの実数が等しいのは、これらの差(の絶対値)が(第3の)正の実数に等しくない場合に限る』ことに注意する。1 と 0.999... との距離は、任意に与えられた任意の正の数より小さい(これは上記の数列で定義される閉区間と三角不等式を用いて形式的に証明できる)。したがって、この距離は 0 であり、それゆえ 1 と 0.999... は等しい。このことを用いると 例えば 0.333... = 1/3 である理由も説明することができる。
整数や有限小数の場合と異なり、それ以外の表記法は1つの数をいくつかの方法で表すことができる。例えば、分数を用いると、 1/3 = 2/6 となる。 しかしながら、無限小数は一つの数を高々2通りの方法でしか表すことができない。もし、2つの方法があったとすると、そのうちの1つは最後に 9 が無限に続く形であり、もう1つは有限で終わる形である(すなわち、あるところから先は 0 が繰り返す列からなる)。
無限小数が有限小数の必然的な拡張である1つの理由は、無限小数によりすべての分数を表現できることである。筆算を用いると 1/3 のような、整数の単純な割り算が循環小数 0.333... となる。ここで 3 は終わることなく永遠に続く。 この小数を用いて、0.999... = 1 を即座に証明することができる。3と3の積は各桁に 9 を生ずるので、 3 × 0.333...は 0.999... に等しい。一方、3 × 1/3 は 1 である。したがって 0.999...=1 である[1]。この証明の別の形として、1/9 = 0.111... に 9 を掛けることもできる。
もう一つの証明はもっと簡潔に他の循環小数にも適用できる。十進法で表現された数に 10 を掛けると、数字は変化することなく、小数点が1つ右に移動する。ゆえに 10 × 0.999... は 9.999... に等しく、これはもとの数に比べて 9 大きい。このことを見るために、0.999... を 9.999... から引くときに、引き算が桁ごとに扱えるとみなすと、小数点以下各桁において、その結果は 9?9 すなわち 0 である。ところが、小数点のあとに永遠に続く 0 は数を変化させないので、この差はまさしく 9 である。最後の段階では代数を用いる。問題の小数 0.999... を c と呼ぶ。すると、 10c ? c = 9 であり、これは 9c = 9 と同値である。両辺を 9 で割ることにより、c=1 が得られ、証明が完了する [1]。数式を用いて書くと以下のようになる。
以上2つの証明における桁ごとの操作(つまり...の部分への掛算や引算)は「無限回の手順」をふくむ形式的な操作であり、その正当性は直ちに明らかというわけではない。この方針にたった証明は "小数"と "小数が表す数" の間の基本的な関係をはっきりさせることによって厳密なものにすることができる。有限小数に関しては、この過程は実数の計算法則にのみ依存している。この操作が無限小数にも適用できることを証明するためには、実解析の手法を必要とする。
0.999... の問題は数学の式の変形・誘導には影響を与えないので、これは実解析の基本的な定理や命題が証明されるまでは考慮しないでおくことができる。この際の1つの目標は、実数を表現するための記法である十進法小数の特性を明確にしておくことにある。(それにより実解析による証明が位どり記数法とどの様に関係しているのかがはっきりする。)これは、『符号、整数部分を形成する任意個数の数字の有限列、小数点、そして小数部分を形成する数字の列』から構成される。 0.999... を議論する目的においては、整数部分は一桁の b0 によって表されているときを考えれば十分である。