In 1978 David Tall and Rolf Schwarzenberger published a short paper in Mathematics Teaching called “Conflicts in the Learning of Real Numbers and Limits”. They had put a question to first-year mathematics undergraduates at the University of Warwick — students who had chosen to study mathematics at a good university and had passed demanding entrance requirements to do it. The question was whether 0.999…0.999\ldots equals 1 or is slightly less than 1. A clear majority said slightly less. What interested Tall and Schwarzenberger was not the error but the confidence and the variety of the justifications: the students were not guessing, they were reasoning, and their reasoning was internally consistent with an idea of infinite decimals they had never been asked to state out loud.

So let us state the conclusion first and then take the objections seriously. 0.999…=10.999\ldots = 1. Not approximately, not for practical purposes, not in the limit as some hidden parameter goes somewhere. They are two decimal strings denoting the same real number, exactly as 12\tfrac{1}{2} and 24\tfrac{2}{4} are two fractions denoting the same one. The reason so many proofs of this fail to convince is that they answer a question nobody asked. The sceptic is not making an arithmetic mistake. The sceptic is working with an unstated and different idea of what an infinite string of digits means, and until that idea is brought into the open and compared with the actual definition, no amount of algebra will land. What follows is the comparison.

What the three dots actually mean

Here is the definition, and everything else in this article is a consequence of it. A decimal expansion 0.d1d2d3…0.d_1d_2d_3\ldots is notation for an infinite series:

0.d1d2d3…  =  ∑n=1∞dn10n.0.d_1d_2d_3\ldots \;=\; \sum_{n=1}^{\infty} \frac{d_n}{10^{n}}.

And an infinite series is itself notation for a limit of finite sums:

∑n=1∞an  :=  lim⁡N→∞∑n=1Nan,\sum_{n=1}^{\infty} a_n \;:=\; \lim_{N \to \infty} \sum_{n=1}^{N} a_n,

provided that limit exists. So 0.999…0.999\ldots does not abbreviate a process of writing nines. It abbreviates a single real number: the limit of the sequence 0.9, 0.99, 0.999, …0.9,\ 0.99,\ 0.999,\ \ldots

This is worth pausing on, because it is where the entire disagreement lives. Under the standard definition, the three dots do not mean keep going forever. They mean the number that the going-forever converges to. The process is a piece of scaffolding used to specify a number; the number is what the notation denotes. If you hold instead that 0.999…0.999\ldots names the endless process itself, then of course it never equals 1, because a process is not a number and cannot equal one. That reading is not stupid. It is just not what the symbol means.

Objection one: it gets closer and closer but never arrives

This is the most common objection and it is half right, which is why it is so durable.

The half that is right: the sequence of truncations never reaches 1. Write sNs_N for the decimal with NN nines.

NNsNs_N1−sN1 - s_N
10.90.90.10.1
20.990.990.010.01
50.999990.999990.000010.00001
100.99999999990.999999999910−1010^{-10}
NN1−10−N1 - 10^{-N}10−N10^{-N}

Every single sNs_N is strictly less than 1. The gap is 10−N10^{-N}, which is positive for every finite NN. No amount of extending gets you there. All of that is correct.

The half that is wrong: 0.999…0.999\ldots is not one of the sNs_N. It is not s1000s_{1000}, it is not shuges_{\text{huge}}, it is not the last one, because there is no last one. It is the limit, which is a different kind of object from any term of the sequence.

The distinction is not special to this example. Consider 12+14+18+⋯\tfrac12 + \tfrac14 + \tfrac18 + \cdots. No partial sum equals 1; the NN-th is 1−2−N1 - 2^{-N}. Yet the sum of the series is 1, and nobody finds this scandalous, because the geometric picture — walking half the remaining distance to a wall, forever — makes it obvious that 1 is the number the walk is aimed at even though the walker never touches the wall. The sum is the wall, not the walker.

To say the limit is 1 is to make a precise and checkable claim: for every tolerance ε>0\varepsilon > 0, all but finitely many sNs_N lie within ε\varepsilon of 1. Take ε=10−6\varepsilon = 10^{-6}. Then s7=0.9999999s_7 = 0.9999999 is within 10−7<ε10^{-7} < \varepsilon, and so is every term after it. Name any tolerance and N>log⁡10(1/ε)N > \log_{10}(1/\varepsilon) does the job. That is the definition of convergence to 1, satisfied exactly, with nothing left over.

Objection two: there must be a gap, however small

The second objection concedes the first and retreats to a stronger position. Fine, says the sceptic, the limit is a number. But it is a number just barely below 1 — separated from it by an infinitely small amount. Call the gap dd.

This objection can be settled completely, and the settlement is a theorem about the real numbers rather than a matter of opinion. Suppose x=0.999…x = 0.999\ldots and suppose d=1−x>0d = 1 - x > 0.

The Archimedean property of R\mathbb{R} says that for every real ε>0\varepsilon > 0 there is a natural number nn with 1n<ε\tfrac1n < \varepsilon. Equivalently: there is no positive real number smaller than every 1n\tfrac1n. This is not an axiom bolted on to prevent inconvenient answers; it is a consequence of completeness. If N\mathbb{N} were bounded above in R\mathbb{R} it would have a least upper bound ss; then s−1s - 1 is not an upper bound, so some n>s−1n > s-1, so n+1>sn+1 > s, contradicting that ss bounds N\mathbb{N}. Hence N\mathbb{N} is unbounded, and the reciprocals get arbitrarily small.

Now apply it. If d>0d > 0, choose nn with 10−n<d10^{-n} < d. But x≥sn=1−10−nx \geq s_n = 1 - 10^{-n}, since xx is the limit of an increasing sequence containing sns_n. Therefore

d=1−x≤1−sn=10−n<d,d = 1 - x \leq 1 - s_n = 10^{-n} < d,

which says d<dd < d. Contradiction. So d=0d = 0, and x=1x = 1.

Concretely: propose that the gap is 0.00000010.0000001. Then s8=0.99999999s_8 = 0.99999999 is already closer to 1 than your proposed gap allows, and 0.999…≥s80.999\ldots \geq s_8. Propose any gap and the same thing happens one line later. The gap has to be smaller than every 10−n10^{-n}, and the only real number with that property is zero.

The same conclusion arrives by an even shorter route. In R\mathbb{R}, if a<ba < b then a<a+b2<ba < \frac{a+b}{2} < b. So if 0.999…0.999\ldots and 11 were different, some number would lie strictly between them, and it would be nameable. Try to name it. Any decimal with finitely many nines is below 0.999…0.999\ldots, not between. There is nothing else on offer.

What 0.000…10.000\ldots1 would have to be

At this point the gap is usually given a name: 0.000…10.000\ldots1, an infinite run of zeros with a 1 at the end. This is the sharpest form of the intuition and it deserves a direct answer rather than a dismissal.

A decimal expansion is a function from the positive integers to the digits {0,1,…,9}\{0,1,\ldots,9\}. The nn-th digit sits at position nn, and every position is a finite natural number. The string 0.000…10.000\ldots1 asks for a digit at a position that comes after all the natural numbers — but N\mathbb{N} has no last element, so there is no such position. The notation does not denote a badly behaved number; it denotes nothing, in the way that 70\frac{7}{0} denotes nothing.

You can, of course, invent an indexing set with a position after all the naturals. That is essentially what the hyperreal constructions do, and it is discussed at the end. But it is a change of notation, not a discovery about R\mathbb{R}.

Objection three: the 10x−x10x - x argument is a trick

The manipulation everyone learns first runs like this. Let x=0.999…x = 0.999\ldots. Then 10x=9.999…10x = 9.999\ldots, and

10x−x=9.999…−0.999…=9,so 9x=9,x=1.10x - x = 9.999\ldots - 0.999\ldots = 9, \qquad \text{so } 9x = 9, \qquad x = 1.

Sceptics frequently feel cheated by this, and they are entitled to. The argument is valid, but it is question begging: every step presupposes that 0.999…0.999\ldots denotes a real number — something you may multiply by ten, subtract from another, and solve for — and that multiplying by ten shifts the decimal point cleanly across an infinite string. Both of those are theorems about convergent series. They are exactly the machinery whose applicability is in dispute. The argument uses the conclusion to reach the conclusion, and it does so invisibly.

That this is a real defect and not pedantry can be shown by running the identical manipulation on something where it produces a false statement. Let S=1+2+4+8+⋯S = 1 + 2 + 4 + 8 + \cdots. Then 2S=2+4+8+⋯=S−12S = 2 + 4 + 8 + \cdots = S - 1, so S=−1S = -1. Nobody accepts that as a fact about real numbers, and the reason is that SS does not exist as a real number — the manipulation was applied to a symbol that denotes nothing.

But now the twist. In the 10-adic numbers, where closeness is measured by divisibility by powers of ten, the sequence 9,99,999,…9, 99, 999, \ldots does converge, because 10n10^n tends to zero. Its limit is the object usually written …999\ldots999, with infinitely many nines to the left. Apply the same manipulation: let y=…999y = \ldots999, then 10y=…990=y−910y = \ldots990 = y - 9, so 9y=−99y = -9 and y=−1y = -1. And that is true in the 10-adics: …999+1=…000=0\ldots999 + 1 = \ldots000 = 0.

So the shifting-and-subtracting argument yields a true statement in one system, a false statement in another, and a true statement about 0.999…0.999\ldots in a third. What determines which is not the algebra. It is whether the string converges in the system you are working in. The algebra is downstream of the definition, which means it cannot establish the definition.

The proof that settles it

Strip the scaffolding away and the real argument is three lines of geometric series.

0.999…  =  ∑n=1∞910n  =  9∑n=1∞(110)n  =  9⋅1/101−1/10  =  9⋅1/109/10  =  1.0.999\ldots \;=\; \sum_{n=1}^{\infty} \frac{9}{10^{n}} \;=\; 9\sum_{n=1}^{\infty}\left(\frac{1}{10}\right)^{n} \;=\; 9 \cdot \frac{1/10}{1 - 1/10} \;=\; 9 \cdot \frac{1/10}{9/10} \;=\; 1.

The middle step uses ∑n≥1rn=r1−r\sum_{n\geq1} r^n = \frac{r}{1-r} for ∣r∣<1|r| < 1, which is not an assumption but a computation. The finite sum is

SN=∑n=1N9⋅10−n=1−10−N,S_N = \sum_{n=1}^{N} 9 \cdot 10^{-n} = 1 - 10^{-N},

which you can verify directly: S1=0.9S_1 = 0.9, S2=0.99S_2 = 0.99, S3=0.999S_3 = 0.999. Since 10−N→010^{-N} \to 0, we get SN→1S_N \to 1, and the sum of the series is by definition that limit.

Two features distinguish this from the 10x−x10x - x argument. First, nothing is assumed about the object 0.999…0.999\ldots; the series is built from finite sums, whose arithmetic is uncontroversial, and the limit is taken at the end. Second, the existence of the limit is guaranteed in advance by the completeness of R\mathbb{R}: the sequence SNS_N is increasing and bounded above by 1, and in a complete ordered field every such sequence converges. The number is produced before it is evaluated. That is why this proof settles the matter and the others merely illustrate it.

Completeness is also where the argument would fail if you tried it elsewhere. In Q\mathbb{Q}, increasing bounded sequences need not converge — which is exactly why 2\sqrt2 is missing. Infinite decimals denote numbers because R\mathbb{R} was built to make them do so.

The 1/31/3 argument and its honest limitation

The other popular demonstration is

13=0.333…⟹3×13=3×0.333…⟹1=0.999…\frac13 = 0.333\ldots \quad\Longrightarrow\quad 3 \times \frac13 = 3 \times 0.333\ldots \quad\Longrightarrow\quad 1 = 0.999\ldots

It is correct, and it converts more sceptics than anything else, because long division makes 13=0.333…\tfrac13 = 0.333\ldots feel like something you watched happen rather than something you were told.

It should still be admitted that this proof is circular in the same way as the first one. The claim 13=0.333…\tfrac13 = 0.333\ldots is itself a statement that an infinite decimal equals a rational number exactly, justified by exactly the same series computation: ∑n≥13⋅10−n=3⋅1/109/10=13\sum_{n\geq1} 3 \cdot 10^{-n} = 3 \cdot \frac{1/10}{9/10} = \tfrac13. Anyone who doubts that 0.999…0.999\ldots reaches 1 has equal grounds to doubt that 0.333…0.333\ldots reaches 13\tfrac13, and consistency demands they doubt both. In practice they rarely do, which is informative: the resistance is not to infinite decimals in general but to an infinite decimal equalling a number that has a short finite name. Nobody objects that 0.333…0.333\ldots falls short of a third, because there is no rival expression for a third to fall short of.

What this is really about: decimal notation is not unique

Here is the fact that reframes the whole question. 0.999…=10.999\ldots = 1 is not a curiosity about the number 1. It is an instance of a general feature of positional notation, and once you see the general feature the specific case stops being surprising.

Every terminating decimal other than zero has exactly two decimal representations:

NumberRepresentation ARepresentation B
111.000…1.000\ldots0.999…0.999\ldots
0.50.50.5000…0.5000\ldots0.4999…0.4999\ldots
222.000…2.000\ldots1.999…1.999\ldots
7.37.37.3000…7.3000\ldots7.2999…7.2999\ldots
−0.25-0.25−0.25000…-0.25000\ldots−0.24999…-0.24999\ldots

Every other real number — every irrational, and every rational whose denominator is not of the form 2a5b2^a 5^b — has exactly one. So the map from digit strings to real numbers is onto but not one-to-one: a countable set of numbers gets hit twice, everything else once.

The phenomenon is not about ten. In binary, 0.111…2=10.111\ldots_2 = 1, since ∑n≥12−n=1\sum_{n\geq1} 2^{-n} = 1. In base three, 0.222…3=10.222\ldots_3 = 1. In base bb, the alternative representation of a terminating expansion ends in an infinite tail of the digit b−1b-1. The ambiguity is a property of positional systems as such, and it arises for the same structural reason every time: the representation is a limit, and two different sequences can share a limit.

Seen this way, the question changes character. It is not why does 0.999… equal 1. It is why did anyone expect distinct strings to name distinct numbers, and the answer is that for finite strings they do, and the habit carries over unexamined.

Why Cantor’s diagonal argument has to be careful

The non-uniqueness has a real technical consequence, and it shows up in the most famous proof in set theory.

Cantor’s diagonal argument shows the reals are uncountable: given any list x1,x2,x3,…x_1, x_2, x_3, \ldots of reals in [0,1][0,1], construct a new number yy whose nn-th digit differs from the nn-th digit of xnx_n. Then yy differs from every listed number, so the list was incomplete.

But the naive construction has a hole. Suppose the rule is add one to each diagonal digit, wrapping 9 to 0. Applied to a list beginning 0.1000…, 0.0000…, …0.1000\ldots,\ 0.0000\ldots,\ \ldots it might produce 0.2111…0.2111\ldots — fine — but it might also produce a string like 0.4999…0.4999\ldots when the list already contains 0.5000…0.5000\ldots. The constructed string differs from the listed one in every digit and yet names the same real number. The proof would be broken.

The standard repair is to restrict the digits used. Choose, for instance, digit 4 when the diagonal digit is not 4 and digit 5 when it is. The resulting string contains only 4s and 5s, so it has no tail of 0s or 9s, so it is the unique representation of its value, and the argument goes through. That small precaution in every careful textbook proof exists entirely because 0.999…=10.999\ldots = 1.

Is there a number system where 0.999…0.999\ldots is less than 1?

This is the question that should be answered honestly rather than waved away, because popular explanations tend to get it wrong in both directions — some insisting no such thing is conceivable, others cheerfully claiming that infinitesimals make the sceptic right after all.

Infinitesimals genuinely exist in several rigorous systems. The hyperreal numbers ∗R^*\mathbb{R}, built by Abraham Robinson in the 1960s as the foundation of non-standard analysis, contain numbers greater than zero and smaller than every positive real, along with their infinite reciprocals. The surreal numbers, constructed by John Conway around 1970, contain infinitesimals too. In both, the Archimedean property fails.

And in both, 0.999…0.999\ldots still equals 1.

The reason is precise. ∗R^*\mathbb{R} contains R\mathbb{R} as a subfield. The symbol 0.999…0.999\ldots denotes the sum of a series indexed by the ordinary natural numbers, and that sum is a real number, computed by the ordinary limit, equal to 1. Embedding 1 into a larger field does not make it smaller. Nothing about the presence of infinitesimals elsewhere in the field changes the value of a convergent real series.

What you can do in ∗R^*\mathbb{R} is build a different object. For an infinite hypernatural HH, the hyperfinite sum ∑n=1H9⋅10−n\sum_{n=1}^{H} 9 \cdot 10^{-n} equals 1−10−H1 - 10^{-H}, and 10−H10^{-H} is a positive infinitesimal, so this quantity is strictly less than 1. Its standard part — the unique real number infinitely close to it — is 1. A. H. Lightstone introduced an extended decimal notation for hyperreals in the American Mathematical Monthly in 1972, in which digit positions are indexed by hypernaturals and such quantities can be written down explicitly. Some authors, notably Karin and Mikhail Katz in a 2010 paper, have argued that this formalises what students mean when they insist on a gap.

But observe what that object is. It is a sum with a specified number of terms, namely HH of them, which happens to be infinite. It is not the ordinary decimal 0.999…0.999\ldots, whose meaning is fixed as a limit over N\mathbb{N} with no terminal index at all. Different HH give different values, so the notation does not even determine a single number until you say which HH you mean. The sceptic’s intuition can be given a rigorous home, and that is a genuinely interesting fact, but the price of admission is abandoning the standard meaning of the symbol.

The general principle is worth stating flatly, because it is what most explanations blur. A number system in which 0.999…<10.999\ldots < 1 is not a system with different numbers. It is a system with a different definition of what the notation denotes. Within any system where the three dots mean the limit of the sequence of truncations, and where that limit exists, the value is 1 — in the reals, in the hyperreals, in the surreals, in the complex numbers. To get a smaller answer you must first decide that the string means something other than a limit, and having decided that, you are no longer disagreeing about arithmetic. You are proposing new notation.

Which is why the original question resolves the way it does. The students Tall and Schwarzenberger surveyed were not bad at algebra. They had a coherent picture in which an infinite decimal is an unfinished process, and within that picture their answer is correct. The picture is simply not the definition, and the definition is not negotiable once you want the real numbers to be complete.


Related topics: Cantor’s Infinities: Some Are Larger Than Others, Infinity: Why Some Infinities Are Larger Than Others, Surreal Numbers: The Number System Born in a Game of Go, p-adic Numbers: The Number System Where 5 + 25 + 125 + … = −1/4, Taylor Series: How a Function Becomes an Infinite Polynomial, Continued Fractions: The Hidden Numerical Landscape, Transcendental Numbers: e, π, and What They Aren’t, Zero: The Number That Wasn’t Supposed to Exist — and Without Which Nothing Works

Frequently asked

Is 0.999 repeating really equal to 1?

Yes, exactly and not approximately. They are two decimal strings naming the same real number, in the same way that 1/2 and 2/4 are two fractions naming the same number. The string 0.999... is defined to mean the limit of the sequence 0.9, 0.99, 0.999 and so on, and that limit is 1. This is not a convention adopted for convenience: given the standard definition of a decimal expansion as an infinite series, any other value would contradict the completeness of the real numbers.

What number is between 0.999 repeating and 1?

There is none, and that is the shortest proof that they are equal. Between any two distinct real numbers a and b there is always a third, for instance their average. So if 0.999... and 1 were different, their average would have to sit strictly between them. No such number can be written down. Any decimal with finitely many nines is smaller than 0.999..., and nothing else is available. Since no number separates them, they are the same number.

Does 0.999 repeating just approach 1 or actually equal it?

The sequence 0.9, 0.99, 0.999 approaches 1 and no term of it ever reaches 1. But 0.999... is not a term of that sequence. It is the limit of the sequence, which is a single fixed number, not a process in motion. The confusion is between an infinite sequence, which genuinely approaches, and the number that sequence converges to, which is already there. The notation with three dots denotes the destination, not the journey.

Is the 10x minus x proof a trick?

It is not a trick, but it is question begging, and a sceptic is entitled to say so. Setting x equal to 0.999..., multiplying by ten and subtracting is valid only if 0.999... already denotes a real number that can be multiplied and subtracted, and if multiplying by ten shifts the digits. Those facts follow from the series definition, which is the very thing under dispute. The same formal manipulation applied to the string with infinitely many nines to the left of the decimal point yields minus one, which is false in the real numbers and true in the 10-adic numbers, so the manipulation alone cannot decide anything.

Are there number systems where 0.999 repeating is less than 1?

There are number systems containing infinitesimals, such as the hyperreals and the surreal numbers, but in none of them is the standard string 0.999... less than 1. The reason is that the notation is defined as a limit, and the limit is still 1. What you can build in the hyperreals is a different object, a sum of nines truncated at an infinite index, which is less than 1 by an infinitesimal amount. That object has a specified number of nines rather than the ordinary unspecified infinity, so it is not what the usual notation denotes. Any system in which 0.999... is less than 1 has redefined the notation.