Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Replies: 2   Last Post: Apr 24, 2012 5:33 AM

 Messages: [ Previous | Next ]
 David Bailey Posts: 714 Registered: 11/7/08
Posted: Apr 24, 2012 5:31 AM

On 23/04/2012 10:43, Alexander Mayer wrote:
> In[1]:= (* This notebook produced by Mathematica 8.0.4.0 *)
> (* Platform: OSX 10.6.8 on MacBook Pro *)
>
> In[1]:= b = 6371.01 (* We set the value of b to this real number. *)
>
> Out[1]= 6371.01
>
> In[2]:= SetPrecision[a = b, 20] (* We test the actual value of b. *)
>
> Out[2]= 6371.0100000000002183
>
> In[3]:= (* Mathematica has added a small constant! *)
>
> In[4]:= (* Adding zeros to the 16th place fixes the problem. *)
>
> In[5]:= c = 6371.0100000000000000
>
> Out[5]= 6371.0100000000000000
>
> In[6]:= SetPrecision[a = c, 20]
>
> Out[6]= 6371.0100000000000000
>

Your original number is a machine precision number - that means it
stored as a binary floating point number. Such a number will not in
general be an exact decimal number - hence the small additional constant.

If you take a low precision number, there is no way for the system to
conjure the extra precision information from nowhere!

David Bailey
http://www.dbaileyconsultancy.co.uk

Date Subject Author
4/23/12 Alexander Mayer
4/24/12 David Bailey
4/24/12 George Woodrow III