Register to reply 
Why is the value zero not possible with computers?by fisico30
Tags: computers 
Share this thread: 
#1
Jan813, 04:20 PM

P: 374

Hello Forum,
any number that a computer deals with is just an approximation...in what sense? Why is the number zero not possible? The number zero is often a very very very small number (10^19) but never exactly zero. Why? thanks, fisico30 


#2
Jan813, 04:40 PM

Mentor
P: 7,318

I think the issue is with floating point numbers. They consist of a mantissa and exponent. While you can set the mantissa to zeros an exponent of zero sets the number equal to 1. So the only way to get near zero is to have a large negative exponent. That number format cannot precisely represent zero. I would be surprised if there are not ways to get around this.



#3
Jan813, 04:53 PM

PF Gold
P: 291

I'm not 100% if this is what you're looking but it might help:
http://www.johndcook.com/blog/2010/0...esignedzero/ 


#4
Jan813, 06:31 PM

P: 374

Why is the value zero not possible with computers?
thank you.
I was doing some matlab and looking for zeros but all I could find was very small values, no zeros. The function I was using was supposed to give some zeros but it didn't. Fisico30 


#5
Jan813, 06:40 PM

Mentor
P: 21,249

Conceptually, floating point numbers are {sign} {mantissa} X 2^{{exponent}}. Per this wiki page (http://en.wikipedia.org/wiki/IEEE_7541985), zero can be represented as either positive zero or negative zero, with sign being either 0 or 1, respectively, mantissa being zero for both, and exponent being zero for both. 


#6
Jan813, 06:41 PM

Mentor
P: 21,249




#7
Jan813, 06:44 PM

Mentor
P: 21,249




#8
Jan813, 06:55 PM

Emeritus
Sci Advisor
HW Helper
Thanks
PF Gold
P: 6,470

IEEE 754 specifies signed zeroes in its floating point standard.
+0 = 0 = 0, so it is possible for zero to be represented on a computer. How else would we get "Error: Divide by zero" messages? 


#9
Jan813, 06:59 PM

PF Gold
P: 6,272

All integers are represented exactly UP TO THE LIMIT of the computers ability to express integers. For an 8bit computer (the VERY early kind) that was 256. For a 16bit computer, that's 65536, and so forth. Perhaps it will help you understand the "approximation" business if you think of a decimal computer that has the ability to represent 10 significant digits. How would that computer represent the answer when doing the division 1/3 ? Well, it would be .3333333333 which is only an approximation because of the necessary rounding. Binary computer have the same problem, just in binary. 


#10
Jan813, 11:22 PM

HW Helper
P: 7,107




#11
Jan913, 12:21 AM

PF Gold
P: 6,272




#12
Jan913, 05:08 AM

P: 194

Mathcad's symbolic processor works in a similar fashion as does Mathematica and at least a few other symbolic applications. 


#13
Jan913, 05:14 AM

P: 530

Seems to me that this is a roundofferror issue. I've seen it a lot myself.
The only rational numbers that can be represented with a finite number of trailing digits in some numberbase system are those whose denominators are nonnegativeinteger powers of the base. Otherwise one gets an infinitelyrepeating finite sequence of digits after some finite number of initial digits. Irrational numbers are even worse. They cannot be represented with a finite number of trailing digits in *any* base. It's possible for computers to work with integers and floatingpoint numbers with arbitrarily high numbers of digits, limited only by the available memory. One has to work with arrays of digits, but it's feasible. It's also possible for computers to work with exact rational numbers as pairs of integers. It's easy to write functions that implement the rules for manipulating fractions. You can find all this in The GNU MP Bignum Library and in various computeralgebra packages. I implemented rational numbers myself for the C++ version of my semisimpleLiealgebra software, because I wanted something faster than GMP. I did it as a template class, with a parameter: the type of integer. 


#14
Jan913, 05:29 AM

PF Gold
P: 6,272




#16
Jan913, 06:08 AM

Sci Advisor
PF Gold
P: 1,382

The Goldberg article is one of the "standard" references for programmers who want to understand floating point (noninteger arithmetic operations on IEEE conforming platforms):
http://docs.oracle.com/cd/E1995701/..._goldberg.html This article is about practical applications  comparison of floats: http://www.cygnussoftware.com/paper...ringfloats.htm 


Register to reply 
Related Discussions  
The jet age of computers  General Discussion  39  
Can computers only do what we tell them to?  General Discussion  17  
Old Computers  Computing & Technology  17  
IQ with Computers  Social Sciences  7  
Do you think computers cause...  Computing & Technology  2 