Just saw a nice post at another math blog called Polymathematics about something that bugs me too... The way that people don't understand what repeating decimals mean. In particular, the way that people will insist that 0.9999999... != 1. As a CS geek, I tend to see this as an issue of how people screw up syntax and semantics.

And it has some really funny stupidity in the comments. 0.9999999... = 1.

One quick quote from the post, just because it's a nifty demonstration of the fact which I've not seen before: *(I replaced a GIF image in the original post with a text transcription.)*

Let x = 0.9999999..., and then multiply both sides by 10, so you get 10x = 9.9999999... because multiplying by 10 just moves the decimal point to the right. Then stack those two equations and subtract them (this is a legal move because you're subtracting the same quantity from the left side, where it's called x, as from the right, where it's called .9999999..., but they're the same because they're equal. We said so, remember?):

10x = 9.99999999... - x = 0.99999999... ------------------------- 9x = 9Surely if 9x = 9, then x = 1. But since x also equals .9999999... we get that .9999999... = 1. The algebra is impeccable.

I also need to quote the closing of one of the comments, just for its sheer humor value:

Bottom line is, you will never EVER get 1/1 to equal .99999999... You people think you can hide behind elementary algebra to fool everyone, but in reality, you're only fooling yourselves. Infinity: The state or quality of being infinite, unlimited by space or time, without end, without beginning or end. Not even your silly blog can refute that.

Wait, I can't tell what you are agreeing with. Do you agree that a limit is the same as a number, or do you agree that a limit is never reached?

Are you serious that "the way that people will insist that 0.9999999... = 1" bugs you? You've got to be joking, surely? Or did you mean not equal rather than equal?

Never mind me, I'm just an idiot who can't type. I left out the "!" for "not" in "not equals".

What bugs me is the ".99999999... != 1" argument. .999999... is just a manifestation of the fact that decimal syntax is screwed up for certain numbers.

beervolcano:

As I said in my last comment... I don't see ".99999... = 1" as a statement that limit = number; rather, I see it as a notational error of base-ten decimal notation. Try to write 2*1/2 in base three, and you'll see a similar phenomenon. 9*1/9 = .9999999999999; and 9*1/9=1.

I thought you were a CS geek who thinks in binary. It's

.11111...=1

There are 10 types of people in the world: those who can think in binary and those who can't.

No, it's all right, I didn't get it at first. Honestly I hadn't seen this before. Chalk it up to the education system or bad memory. It's not about limits or anything, it's a matter of symbolic representation. It's confusing, IMO, to write it out as 0.999.... (or 0.9bar or what you wrote) even if the symbolism represents an infinite number of 9's. The fact that the nines are there in the first place is confusing to most people who haven't seen a good proof for 0.9bar=1. It's the same as saying 1/3 = 0.3bar and people will accept that usually, because they've seen it since 7-8 grade.

I think a more convincing argument is to say 1/3 = 0.3bar, 3 * 1/3 = 1, and 3 * 0.3bar = 0.9bar, so 0.9bar = 1.

It's just the fact that the symbols were so different. Do you see what I mean?

No, it's all right, I didn't get it at first. Honestly I hadn't seen this before. Chalk it up to the education system or bad memory. It's not about limits or anything, it's a matter of symbolic representation. It's confusing, IMO, to write it out as 0.999.... (or 0.9bar or what you wrote) even if the symbolism represents an infinite number of 9's. The fact that the nines are there in the first place is confusing to most people who haven't seen a good proof for 0.9bar=1. It's the same as saying 1/3 = 0.3bar and people will accept that usually, because they've seen it since 7-8 grade.

I think a more convincing argument is to say 1/3 = 0.3bar, 3 * 1/3 = 1, and 3 * 0.3bar = 0.9bar, so 0.9bar = 1.

It's just the fact that the symbols were so different. Do you see what I mean?

Obviously you do, I need to read more carefully.

beervolcano:

Yeah, it definitely is confusing in a notational sense. And you can see in the comments to the thing I linked to just how intensely people attach meaning to the notation, even though they don't really understand what it means.

The "1/3=3bar, 3*1/3=9bar, 3*1/3=1" is, I think, less compelling to some people - witness again the comments in the linked post. 0.999999 just looks so much like you need a "1" in there somewhere, people will insist that it means something different than 1/3*3. They generally can't explain just what the difference is - but they're very very sure that there is one.

I remember convincing someone that 0.99999.... = 1 by this argument:

Clearly, 0.99999.....

The post in the polymath blog is written in such an endearing way that I cannot get angry with them. It reminds me of the way my wife does math - and over the years I have learned the wisdom not to interfere with such lines of "reasoning".

However, those of you who like me have tried to put math into computers will all remember long, lonely nights chasing the bugs that occur when you sometimes forget than .99999... is NOT equal to '1'. The derived equation ( .0000...1 NOT equal to '0') has equally cost many a programmers night sleep.

Uffe:

You're making the mistake of confusing roundoff errors in floating point math on a computer with real math. Any number 0.99...99, with a finite number 9s, is less than 1. Using floating point math on a computer, you're always using the equivalent of a finite number of 9s. But we're not talking about a finite number of 9s.

You can understand the difference by asking a simple question: Suppose I've got a number, which is 0.9999, with some number of nines after it. What do I need to add to it to make it be 1?

If it's 0.9, then I can add 0.1 to it to make it 1.

If it's 0.99, then I can add 0.01.

If it's 0.999, then I can add 0.001.

If it's 0.99..99 with K 9s, then I can add 10^-k to it to make it 1.

But if I have 0.99999 with an infinite number of 9s - that is, 0.9bar, then what can I add to it? If I add 1x10^-100, what do I get? Something bigger than 1 - because all of those trailing 9s after it are still there - so I'd wind up with 1 + (0.9bar*10^-100). No matter *what* I add - I wind up with something more than 1. It is 1 - because anything I add to it, no matter how small, will make it be more than one. The only thing I can add to make it be 1 is 0.

Just to be annoyingly pedantic - 0.000000....0001 with an infinite number of 0s *is* 0. Putting a one on the end is meaningless - it's a notational error. Because there's an

infinitenumber of 0s ahead of it, you'llneverget to that trailing 1.This is all just goofiness caused by the fact 0.9bar is a

notational error- it's a wierd artifact of working with ratios written in decimal form. When you multiply a ratio that isn't evenly divisible with the decimal base, you get notational artifacts. They don't mean anything beyond the fact that the decimal notation is not well-suited towards expressing ratios that are't evenly divisible with the base.Yeah, IEEE 754 numbers are not

quitethe same as reals no matter what certain programming languages call them. Overflows have been my bugbear. And integers? Hah. It's a rare programming language that knows what an integer is.Another approach I've sometimes had luck with is to point out that 0.99999.... and 1 aren't equal as

stringsbut are equal asreal numbers; another way to phrase it is that the two different strings "1" and "0.999999999..." identify the same real number.Then, you have to ask what a real number is, and how you determine what real number is represented by an infinite string, but then it's just straightforward reasoning from limit definitions.

In case anyone is still reading:

I used to be a math teacher. One thing that I tried very hard to get across was the difference between "number" and "numeral". A "number" is an idea, a concept, an abstraction. A "numeral" is a symbol that is used to represent a number. For any number there can be a multitude of numerals that represent it (in fact, an infinity of them). So, "4" is a synbol for the number four. But so is 2+2, and 20/5, etc. As one procedes through one's mathematical career one is always learning new symbols for numbers. So at some point you learn that /16 (square root symbol, I don't know how to type that) is also a numeral for four. And later one learns the meaning of the notation "...". And, because of that meaning, 3.999... must also be a symbol for four. The problem that people have with that notation is that they never learned that basic difference between number and numeral.

Too much time spent browsing the sci.math group in the past has convinced me that this is one of the top two mathematical things that people tend to a)not understand and b)get upset about. The other is Cantor's proof of the uncountability of the reals. Infinities seem to be hard to grasp, understandably.

Well, yes, 0.999... = 1. If you're talking about real numbers, that is.

If, however, you're talking about _surreal_ numbers (and, no, I'm not making this up), 0.999... is 1 - *, where * is a number which is less than any positive real number, but greater than 0. (I'm pretty sure I'm using the wrong symbol here, the correct symbol might be "0+"). One interesting thing about the surreal numbers, is that you get numbers which cannot be compared with each other. For any pair of real numbers (a,b), either a

If you are amused by discussions like this, you might want to read the discussions on the Wikipedia article Proof that 0.999... equals 1. These discussions are at a slightly higher level than the ones at Polymathematics (the "9x = 10x - x"-proof really requires you to prove that arithmetic with infinite decimal expansions can be performed in the intuitive way). Highlights are at Archive02, Archive05 and the "arguments "page.

A highlight is the anonymous user who claims to be a retired supermodel and claims that induction shows that "(forall n: sum_{i=0}^n a_i

Karl:

Yeah, you've got it exactly. I tend to use different words; because I'm a computer science guy, I tend to talk about it as "syntax" (the way things are written) and "semantics" (what things mean); the numeral is syntax, the number is semantics.

Unfortunately, way too many people don't understand that distinction, and so believe that all syntactic differences have semantic significance - even though many don't.

0.9999... and 1 are just different syntaxes for the

numberone. Syntactically, they lookverydifferent. But semantically, they're the same.All of the arguments about this, both here and in the blog I linked too are different ways of demonstrating that the

semanticsof 0.999999... and 1 are the same, even though the syntax is different.Craig:

I've never heard of the "surreal" numbers stuff you mentioned - it sounds

fascinating. Are there any particularly good sources you can reccomend?Andrew:

I can remember how astounded I was when I first saw Guy Steele at a PLDI conference years back, talking about the numeric tower in Scheme. Scheme actually had integers - not modulo numbers, not bounded overflowing integers, but *integers*; and ratios! A programming language where I could actually write 1/3, and have it mean *1/3*, exactly!

MarkCC:

Thanks for the putting things straight above. Actually I did not mean to support the play with notational artifacts on the polymath page, I just found it cute. There is an elegant way using Cauchy Sequences to be found in Wikipedia:

Andrew:

Maybe you noticed there is a fact about IEEE754 notation that knocks off mathematicians even more: For fixed word sizes, there are more

"Integers"than there are"Floats"! (You loose some Floats due to the exponent field, whereas Integers use the full word bit size). Cantor would turn in his grave if he saw people using a subset of the Natural numbers able to numberallof the Real numbers...An excellent introduction to surreal numbers is linked in the "External links" section of the Wikipedia article on surreal numbers.

Craig:

It is a bit of a stretch to assert that 0.999...!=1 in the surreal numbers. The natural definition of 0.999... in the surreals is δ(0.999...)=δ(1)=1, where δ:

R->Sis the natural embedding of the reals in the surreals. It follows from the transfer principle that in any extension of the real numbers 0.999...=1.However, it is true that the surreal numbers contains elements like { 0.9, 0.99, 0.999, ... | 1 }, which is both larger than all finite decimal numbers 0.99...9 and less than 1. But there is no element corresponding to the falsely intuitively conception of 0.999... as the immediate predecessor to 1.

If you want a number system where 0.999...!=1, you would have to construct something like Fred Richman's Decimal Numbers. (Un)fortunately this is not an extension of the real numbers -- it is not even a field.

hey, thanks for the link. just to add to the argument for those who didn't read the post: even more convincing than "what's 1-.9999...?" is "what's the number halfway

between1 and .9999....?" no one can answer that.also, i'll be posting a followup soon that links to this discussion.

As a software developer, I delight in showing squeamish mathematicians disgusting things like floats and ints (sorry, real programing languages don't have integers - or reals, even if they call them by those names, and even if they have adaptive precision ints and floats). I feel like a 3rd-grade boy in the dead of winter, who has nonetheless smuggled a live grasshopper into class ...

Or maybe 0.999999... is an 1 - e where e is some infinitesimal. For instance if we consider the hyperreals then we could think of 0.99999.... as the hyperreal number represented by the sequence (0.9, 0.99, 0.999, 0.9999 ....) which is not equal to 1 but is infinestimally less than 1. Of course this is really just trying to make sense of weird decimal notation which maybe the problem. However let me ask a question:

Is there a notation for representing computable real numbers that is practical to mulitiply, subtract and do computations with. In other words is there a notation for representing things like pi and other stuff without loss of precision.

The great thing about this thread is that it started out as a bit of a rant about innumerate bozos, and it's turned into something seriously interesting. Before this, I hadn't heard of the surreal and hyperreal numbers, which are seriously cool. I'm reading up on them, and I'll probably do a few posts about them at some point. Surreals are seriously cool.

WRT a notation for computable reals... Is there a

practicalway of doing computable reals? Not that I know of. Steele did something a few years ago in scheme calledconstructive reals, which are infinite precision real numbers represented byfunctions. The easiest way to think of constructives is as functions where you can invoke, for example, Pi(n) to get the Nth digit of pi.Constructives are cool things, but the catch with them is that they're not particularly efficient. In general, for nearly all applications, the computational cost of using constructives far outweighs the advantages that they provide, because you never really

usethe infinite precision. You always use numbers to some degree of precision; if you know what precision you need in advance, then you can set up your computation in a way that will keep the roundoff error within the appropriate bounds, without the cost of using constructives. Constructives are really only good in situations where you need a precise result, but it isn't worth the time it would take you to analyze the computation and figure out how to write is so that it will give you the quality of result you need.I am certainly not on the level of the folks comemnting above.

I can clearly recall 7th and 9th grade teachers touching on the "notational error" concept: often in the sense that "merely stating 1/3 is more accurate than working it out in decimal". My teachers never took it all the way, unfortunately.

I have mentioned what I learned in this respect to my children, and I am going to point this all out to my 8th grader.

Very interesting.

I posted a comment over on polymath. As someone who is trying to refine my understanding of mathematics, I'd like to get some feedback on it from those here...

A couple of questions from a non-math-geek.

Perhaps I'm wrong, but it seems to me that if .99999... is the sum of a geometric series (as I agree it is), then it should be resolvable as any other converging geometric series: that is, it should be possible to find the limit of the series as n approaches infinity.

The formula for that is given at http://en.wikipedia.org/wiki/Geometric_series#Infinite_geometric_series.

Pardon me, but I don't know how to reproduce the formula directly here, so this is a bit cumbersome, but if you can follow my substitution, it seems that in the series you've chosen a=9/10 and r=1/10. This is good, since |r| is less than 1 and therefore this series will converge. In that case the sum of the geometric series is given by...

S = a/(1-r)

a=9/10, r=1/10, (1-r)=9/10

S = (9/10)/(9/10) = 1

Yet this only establishes that 1 is the limit of the sum of the series as n approaches infinity. As I understand limits, that means that it's possible to get that sum arbitrarily close to 1 by setting n as close as one wishes to infinity.

Have I got that right so far? If so, then I guess the fundamental philosophical question is, as n approaches infinity, can it ever actually reach infinity? If the answer is yes, then the sum of the series equals 1. If no, then the sum only converges on 1.

Not so?

Paul:

There is a difference between the infinite geometric series, and, and the number that you get by multiple 1/9th by 9 in decimal notation; but it's a not particularly interesting difference in the case of .99....

For some computed values, the limit and the exact value are not the same thing. The classic examples of this are non-continuous functions (where things approach a value, but there's a "break" right at the endpoint), and undefined points like in the differential calculus, where things approach a limit as the differential becomes zero, but becomes undefined *at* zero.

But for the infinite geometric series - the value of the series

isexactly one. A computation of the value to any finite length is not quite one; the values of thefinite lengthseries that are a subset of the infinite sequenceapproach1 as the length increases; but the infinite series does equal 1.The standard reference for surreal numbers is Conway's On numbers and games (often called ONAG), which is also notable for starting all numbering of sections, chapters, etc. with 0 rather than 1.

There's also a Springer graduate text called Numbers, which has a chapter on surreal numbers as well as material on infinitesimals and nonstandard analysis,

p-adics, and Cayley numbers (AKA octonions).Well, if you want a basic intro to surreal numbers and their application in game theory, probably the best book is vol. 1 of "Winning Ways for your Mathematical Plays", by Conway et.al. Lots of simple cases worked out, lots of pictorial examples (I believe they recently came out with the 3rd volume in the series). I also recall reading a book titled "Surreal Numbers", but that was much drier.

And Rasmus, what about games where one play can move to a position with values in the set {.9,.99,...}, and the other can move to a position with value 1?

-Craig

Craig, Matt, and whoever else I'm missing:

Thanks for the recommendations. Copies of Conway's "On Numbers and Games" and Knuths "Surreal Numbers" are on their way to me from Amazon. I'll do some writing about this stuff after I have some time to read and digest.

Lets get things correct shall we? Let ^ represent the overline (i.e.: 0.9^ = 0.9 with a line over the 9). We all agree that: 1=3/3=1/3+2/3=0.3^+0.6^ right? What about the following: 1=0.3^+0.6^=(0.3+1/30) + (0.6+2/30) = (0.33+1/300) + (0.66+2/300), correct? Then would it not be correct to assume that to say that 0.x^ is not actually equal to 0.xxxx... but is rather an approximation, and the true equality can only be written as a fraction or the sum of a decimal and its fractional remainder. No matter how many decimal places this is worked out to there will always be the fractional remainder, and to ignore it would be bad math. The problem in this case is the assumption that 0.3^=0.3333... which is an untrue and inconsistent axiom.

Edward:

When we've been writing 0.999..., we're using the "..." as a way of writing 0.9(bar), or what you're writing as 0.9^: the infinite series of "9"s.

As I keep saying, it's just a notational error: because 3 and 10 don't play nicely together, there's no precise way to write "1/3" in decimal form; all of the silly debate around this just keeps revolving around that: 0.9999..., aka 0.9(bar), aka 0.9^, or however you want to write it, is just a notational artifact, not an expression with a semantically distinct meaning.

Mark

So if 0.9999... is a notational artifact, and not an expression with a sematically distinct meaning, is there a way to express, in decimal notation:

Sum_n[n:{1, 2 . . infinity}](9/10^n)

If not, then why isn't 0.9999... a valid representation of the above series.

If so, then saying 0.9999... = 1 is more than a notational artifact, it is a statement that the above sum is equal to 1.

Proof that .999999(repeating) = 1Over at Polymathematics there is some debate as to whether or not the repeating decimal .9 does in fact equal 1.

I wrote a quick proof for the site to show it’s true, if you’re interested you can download the pdf

Technorati Tags: math, pro...

For those that don't believe it, I wrote a proof and put it on my site at http://adrake.blogdns.com

If you prefer, you can download the pdf of the proof directly from the following link:

adrake.blogdns.com/wp-content/uploads/proof.9equals1.pdf

If you have any questions or comments, please contact me at your leisure.

Warmest Regards,

Adam Drake

Craig: The number you describe is the one I mentioned above: { 0.9, 0.99, ... | 1 }. It has the property that it is larger than all finite decimal numbers 0.999...9 and yet is strictly less than 1. But there are infinitely many such numbers. For instance { 0.9, 0.99, ... | 1 } n/1 and only then allow ourselves to simplify the notation by writing "7" rather than "7/1". Likewise when extending the rationals to the reals we find the natural embedding x -> {x,x,x,...} and then allow the replacing of {22/7,22/7,22/7,...} with 22/7. So likewise, to give meaning to "0.999..." in the surreals, we need to consider the natural embedding of the reals in the surreals: d:R->S. So "0.999..." in the surreals really means d(0.999...). But since 0.999...=1 in the reals, we see that 0.999...=d(0.999...)=d(1)=1.

Assuming the following is true which you will hopefully not argue with:

1/3 + 2/3 = 0.3^ + 0.6^ = (0.3 + 3/90) + (0.6 + 6/90) = (0.33 + 3/900) + (0.66 + 6/900). You can extrapolate this to a near infinite number of digits and the fractional component is still non-zero, even though it does approach it. Therefore, the fractional component is still significant, and the only real problem here is defining 3/9 as 0.33333 repeating infinitely which it does not, it only repeats until you stop and add in the fractional remainder. Essentially I'm just saying that if x/9 = 0.x^ then 0.x^ does not equal 0.xxxx... repeating into infinity.

Edward:

The error there is that in decimal notation, numbers that don't divide evenly into ten do form infinite sequences. 0.999.... is an

infinitesequence of nines. Any finite sequence of 9s isnotthe same as 0.9(bar).Extrapolating to a "near infinite" number of digits is a meaningless phrase. Is 1 million digits near infinite? One billion? No matter how large a

finitenumber of digits gets, it's infinitely smaller than an infinite series.The infinite series 0.999... is the same thing as 1. There is no real number - no matter how small - that differentiates between 0.999... because they're the same thing.

Mark C, if I understand you correctly, what you're saying is that in an infinite geometric series, the number of terms n does actually reach infinity, rather than only approaching. Is that correct?

Is this, perchance, related to the distinction between a countable infinite set and an uncountable one?

for anyone interested, i have tried to deal with some of the arguments in the comments of my original post. they are in a new post up now.

Paul S -- yes, an infinite geometric series does have an infinite number of terms; otherwise, it's a finite series, which we know how to add.

I think the confusion is in part that the sum of a convergent series is defined as the limit (as n goes to infinity) of the sum of the first n terms. This is necessary because a priori we only know how to add finitely many things; but we also know how to take limits, so we define infinite sums by combining the two operations.

This is not actually directly related to the issue of countable versus uncountable infinity, other than the fact that we're implicitly assuming our series has only a countably infinite number of terms.

For hyperreal's try

Lectures on the hyperreal by Goldblatt

For surreal there are some advanced out of print books that are very hard to obtain like:

Gonshor's "An introduction to the theory of surreal numbers"

Alling "Foundations of Analysis over Surreal Number Fields"

and finally there is another approach to infinitesimals which makes use of toposes, category theory, and nilpotent infinitesimals and often goes by the name synthetic differential geometry. Although I don't think 0.999999... makes sense in this approach. A good intro to this is

J. L. Bell "A Primer on Infinitesimal analysis"

for anyone still interested, i've posted a final essay about this on the blog that started it all.

Yeah, sorry about necroposting on this old topic, but I thought it might amuse you to know that this discussion is again, alive and well, but this time on the forums for the MMORPG World of Warcraft.

http://forums.worldofwarcraft.com/thread.html?topicId=39414030&sid=1&pageNo=1

You have a Ph-what?? 0.99999.... does indeed equal 1! Ok, I will agree that at first it appears that the 0.9999... will always be shy of 1, but that is only if we stop calculating the answer and stop adding 9's to the never ending string (which of course we will not, because the string of nines is INFINITE and NEVER ends) So, it will reach 1 eventually, but only if the nines never end. When will it reach 1? After you have written all of the nines, which means you will never stop, which means that it will never be that little bit less than 1, and will equal 1! See how easy?

Juan

Just like 0.33333... will eventually equal 1/3 and 0.6666... will eventually equal 2/3

Now some addition 1/3 (0.3333...) plus 2/3 (0.6666...) equals (say it with me now).... ONE!!!

Was the number system ( at its origin ) 'invented' for discreet objects ? Decimal system would be an awesome concept as with the juxtaposition of some discreet objects we obtain a continuum. We have to live with such small apparent mistakes

For those interested in an approach based on the omega-analysis of Schmieden and Laugwitz, it would perhaps be interesting to read my article "Omega-analyse en 0,999...". I have made a rough translation that can be found here:

http://www.warande.net/~bvdonsel/omega-translation.pdf

Regards,

Bart van Donselaar

0.333...=1/3

0.666...=2/3

0.999...=3/3=1

What I think is that when you have an infinite number of decimal points, the best way is use the limit to define it, and clearly the limit of f(x) = ((10^x)-1)/(10^x)) when x -> to infinity is 1...