0.99999... != 1

All off topic discussions go here. Everything from the funny thing your cat did to your favorite tv shows. Non-programming computer questions are ok too.
Android Mouse
Member
Member
Posts: 28
Joined: Fri Feb 02, 2007 10:36 pm

Post by Android Mouse »

nick8325 wrote:If two real numbers are unequal, you can find a number that comes between them (for example, the average of the two numbers). But there's no number between 0.9recurring and 1. So they're equal.
By this logic 0.1111... would equal to 0 since there are no numbers between them. This leads to interesting results:

0.11111... * 9 = 0.99999...

Since 0.1111... equals 0 and 0.9999... equal 1 we can substitute them:

0 * 9 = 1

simplyfing that statement leads to:

0 = 1
User avatar
ucosty
Member
Member
Posts: 271
Joined: Tue Aug 08, 2006 7:43 am
Location: Sydney, Australia

Post by ucosty »

But there are numbers between 0.1111111111.... and 0.

Try 0.111 and 0.1, both are smaller than 0.1111.... and are greater than zero.
The cake is a lie | rackbits.com
User avatar
~
Member
Member
Posts: 1226
Joined: Tue Mar 06, 2007 11:17 am
Libera.chat IRC: ArcheFire

Post by ~ »

Look at this:

http://www.physicsforums.com/archive/in ... 17028.html

It seems to be a play-around with obscure logic and the way math is interpreted or misinterpreted. Nothing so serious but captious.

Put in a fully straight way, and without any hidden captchas, simply No Number Is Equal To Any Other.
Android Mouse
Member
Member
Posts: 28
Joined: Fri Feb 02, 2007 10:36 pm

Post by Android Mouse »

ucosty wrote:But there are numbers between 0.1111111111.... and 0.

Try 0.111 and 0.1, both are smaller than 0.1111.... and are greater than zero.
Oh...

What was I thinking :roll:
User avatar
Colonel Kernel
Member
Member
Posts: 1437
Joined: Tue Oct 17, 2006 6:06 pm
Location: Vancouver, BC, Canada
Contact:

Post by Colonel Kernel »

From a type theoretic standpoint, 0.99999... != 1 simply because 1 is a natural number and 0.999999... isn't. No, you can't use casting here. :D
Top three reasons why my OS project died:
  1. Too much overtime at work
  2. Got married
  3. My brain got stuck in an infinite loop while trying to design the memory manager
Don't let this happen to you!
User avatar
AndrewAPrice
Member
Member
Posts: 2299
Joined: Mon Jun 05, 2006 11:00 pm
Location: USA (and Australia)

Re: 0.99999... != 1

Post by AndrewAPrice »

Android Mouse wrote:I've seen this debate elsewhere on the internet, and am curious what others think here.

I actually wonder how many people actually believe 0.9999... == 1 and how many are just saying they do for the sake of trolling.
use a different base system so that 0.9... in base 10 can be correctly written out
My OS is Perception.
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

Post by Brendan »

Hi,
~ wrote:At least, are there some other clarifications from somebody, some other division other than 9/9 that produces the 0.99999999999..., just to feed the solution with examples?
Try something like (1/3) * 3.

If you think about it, you get 0.3333333333 * 3 = 0.9999999999

For accurate calculations on computers, sometimes it's worth keeping track of a numerator and a denominator, rather than having a single accumulator.

For example, consider this code:

Code: Select all

int test(int a, int a, int b, int c) {
    return a / b * c;
}
Because it's integers, the result depends on the order the compiler does things. For e.g. for "test(1, 3, 6)" you'd get the answer 6 (if the division is done first) or the answer 2 (if the multiplication is done first).

A better idea would be:

Code: Select all

int test(int a, int a, int b, int c) {
    int numerator, denominator;

    numerator = a;
    denominator = 1;

    denominator = denominator * b;    // Do the division
    numerator = numerator * c;           // Do the multiplication

    return numerator/denominator;
}
Or alternatively:

Code: Select all

int test(int a, int a, int b, int c) {
    int numerator, denominator;

    numerator = a;
    denominator = 1;

    numerator = numerator * c;           // Do the multiplication
    denominator = denominator * b;    // Do the division

    return numerator/denominator;
}

In this case, for "test(1, 3, 6)" you'd get the fraction 3/6 regardless of whether the division or the multiplication is done first.

Of course my examples here are very simple - it makes a lot more sense for something like a calculator program (where it's impossible to know which operations will be done in which order beforehand).


Cheers,

Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
User avatar
XCHG
Member
Member
Posts: 416
Joined: Sat Nov 25, 2006 3:55 am
Location: Wisconsin
Contact:

Post by XCHG »

Mathematically, 0.9999 tends to 1 as decimals of 9 are extended to infinity. For example,

1/3 = 0.33333333333333333333333333333333

and

3 * 0.33333333333333333333333333333333 = 1

Some say it should be ~ instead of = but it will be wrong. I read some people saying that "They are equal because there can be found no other numbers between these two." This is completely true. There is an article about this problem in the Passion For Math book.
User avatar
Candy
Member
Member
Posts: 3882
Joined: Tue Oct 17, 2006 11:33 pm
Location: Eindhoven

Post by Candy »

XCHG wrote:Mathematically, 0.9999 tends to 1 as decimals of 9 are extended to infinity. For example,

1/3 = 0.33333333333333333333333333333333

and

3 * 0.33333333333333333333333333333333 = 1

Some say it should be ~ instead of = but it will be wrong. I read some people saying that "They are equal because there can be found no other numbers between these two." This is completely true. There is an article about this problem in the Passion For Math book.
So then 0.99999999999999999999999999..... is not a member of the group (-1, 1) ?
Zekrazey1
Member
Member
Posts: 37
Joined: Sat Mar 10, 2007 8:28 am

Post by Zekrazey1 »

There is no open neighbourhood of 0.999~ that is contained entirely within (-1,1). Or to put it another way, you cannot pick any non-zero, finite, Real distance e such that (0.999~ - e, 0.999~ + e) is entirely contained within (-1,1).

You know, the fact that my first post on this forum is in a 0.999~ =? 1 thread is really sad :D.
GLneo
Member
Member
Posts: 237
Joined: Wed Dec 20, 2006 7:56 pm

Post by GLneo »

first off there is no number in between any number! say 1 and 2 for example in between those is 1.5 and in between 1 and 1.5 is 1.25 and so on until you get an infinitely small difference that you can no longer find a number in between then do this for all numbers in between, you'll find that all numbers are and infinite number of infinitely small differences between every other number!

and about that
2/9 = .22222...
3/9 = .33333...
9/9 = .99999...
what people don't get is that at the end there is an extra 3/9 that can not be displayed ( 3/9 is not .3333... it actually an infinitely small (3/9)'s bigger ), so 9/9 is .999999... PLUS ((9/9) / infinity) which is 1 over infinity which is enough to make it 1 NOT .9999999....

that proof i keep seeing with 10x etc... is just like the 2 + 2 = 5 proof, It's has a flaw but most people don't see it...

just my 1 + .9999.... cents 8)
nick8325
Member
Member
Posts: 200
Joined: Wed Oct 18, 2006 5:49 am

Post by nick8325 »

Candy wrote:So then 0.99999999999999999999999999..... is not a member of the group (-1, 1) ?
Certainly it's not, because it's 1. Otherwise (-1,1) would have a maximum element.
nick8325
Member
Member
Posts: 200
Joined: Wed Oct 18, 2006 5:49 am

Post by nick8325 »

GLneo wrote:first off there is no number in between any number! say 1 and 2 for example in between those is 1.5 and in between 1 and 1.5 is 1.25 and so on until you get an infinitely small difference that you can no longer find a number in between then do this for all numbers in between, you'll find that all numbers are and infinite number of infinitely small differences between every other number!

and about that
2/9 = .22222...
3/9 = .33333...
9/9 = .99999...
what people don't get is that at the end there is an extra 3/9 that can not be displayed ( 3/9 is not .3333... it actually an infinitely small (3/9)'s bigger ), so 9/9 is .999999... PLUS ((9/9) / infinity) which is 1 over infinity which is enough to make it 1 NOT .9999999....
The problem is that 1 / infinity isn't a real number. You can define infinite and infinitesimal quantities to be real numbers if you like (you'll get what's called the hyperreal numbers), but this definitely isn't the usual way. Apparently some people do calculus and analysis this way.

I don't know if the hyperreal numbers have any weird properties - infinity is tricky :)
GLneo wrote:that proof i keep seeing with 10x etc... is just like the 2 + 2 = 5 proof, It's has a flaw but most people don't see it...
Care to explain?...
User avatar
~
Member
Member
Posts: 1226
Joined: Tue Mar 06, 2007 11:17 am
Libera.chat IRC: ArcheFire

Post by ~ »

I don't think that I could say, in the other hand, that:


0 == 0.1


Just because there is no number between them (really, what other number is between absolute 0 and 0.1?). Maybe:


(0 == int(0.1)) //Compare only integers
(0 == 0) //This is clearly another matter


Saying that both numbers are identical just because there are no any other numbers in between would be like to say that two people are the same individual just because there is no other person between them. It's not mathematically enough reason nor a valid reason.


And something else I see that can be what confuses you, and that has already been said by others here:


Example 1 (in your calculator):
-------------------
Divide 9/9.
It gives you 1, will NEVER give you 0.9999... so it cannot be said to be a comparisson.



Example 2:
-------------------
Suppose that X/Y gives you 0.9999999....
Now, to go back to the original X by multiplying 0.9999999....*Y. It gives you original X. It may or may not be 1; it will never go back to 1 unles a different Y is used. That doesn't seem to take us anywhere.


Example 3 (in your calculator):
-------------------
Type at full capacity in your calculator 0.999999999999999999999999. Now, since so much has been thought of number 9, multiply 0.9999999999*9. You see that it gives you 8.99999999999..., because it's a number you have written, the calculator doesn't take care of proper rounding nor that of the actual dividend.


Hence my careful request of a pure division, a division not requiring something like (0.999999999999*9) or ((1/3)*3); of course the calculator will give you an approximate value in the first and will just reconstruct the dividend "1" for you in the second.

If we go for the 9/9, we shouldn't say that it demonstrates that both numbers are the same because it readily gives you 1, not 0.99999999.....

If it were so, then something like (0.1*5) should be 0 instead of 0.5. Or in the other hand, we could say that 0 is the same than 0.1, because there are no any other numbers in between:

Code: Select all

  0 = 0.1
0.1 = 0
Well, maybe 0.00000000000000.....................................................1 or sort of. Still not the same; it wouldn't give 0 yet nor a division by 0 issue.

Doesn't look good, does it? What is that useful for?
nick8325
Member
Member
Posts: 200
Joined: Wed Oct 18, 2006 5:49 am

Post by nick8325 »

~ wrote:(really, what other number is between absolute 0 and 0.1?)
:shock: What about 0.05??

The real numbers are dense: between any two real numbers there's another real number. (In fact, between any two real numbers there's a rational number - see http://abstractmath.org/MM/MMRealDensity.htm.)

So, if there's no real number between two real numbers, they must be the same. (If they weren't the same, between them there'd be another real number.)

Of course, it's not true that if there's no integer between two integers, they must be the same, or for people like you mentioned. But that's because integers and people aren't dense.
Post Reply