Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Is there a simple way to transform 1.1 to 11/10?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg92994] Re: Is there a simple way to transform 1.1 to 11/10?
  • From: Szabolcs Horvat <szhorvat at gmail.com>
  • Date: Wed, 22 Oct 2008 05:39:01 -0400 (EDT)
  • Organization: University of Bergen
  • References: <gdkajv$4r2$1@smc.vnet.net>

Alain Cochard wrote:
> The obvious
> 
>     In[1]:= x=1.1`Infinity
> 
> is not syntactically correct.
> 
> I understand that SetPrecision[1.1,Infinity] does not work either:
> 
>     In[3]:= SetPrecision[1.1,Infinity]
> 
>             2476979795053773
>     Out[3]= ----------------
>             2251799813685248
> 
>     In[4]:= N[%,20]
> 
>     Out[4]= 1.1000000000000000888
> 
> I searched the newsgroup and thought I had the solution with Rationalize:
> 
>     In[5]:= Rationalize[1.1,0]
> 
>             11
>     Out[5]= --
>             10
> 
> But
> 
>     In[9]:= Rationalize[1.000000001,0]
> 
>             999999918
>     Out[9]= ---------
>             999999917
> 
>     In[10]:= N[%,20]
> 
>     Out[10]= 1.0000000010000000830
> 
> So any simple way?
> 

Hello Alain,

Rationalize is the way to go.  Floating point numbers are usually stored 
in a binary (not decimal) representation on computers.  1.000000001 is 
not exactly representable in binary (in the same way as 1/3 = 
0.3333333... is not exactly representable in decimal).  Note that in 
your example you start with a MachinePrecision number (approximately 15 
digits), and then convert back to a number with 20 digits of precision. 
  If you start with 1.000000001`20 then everything will be fine.

In[1]:= Rationalize[1.000000001`20, 0]
Out[1]= 1000000001/1000000000

In[2]:= N[%, 20]
Out[2]= 1.0000000010000000000

Another example:

In[1]:= Rationalize[N[Sqrt[2], 30], 0]
Out[1]= 1023286908188737/723573111879672

In[2]:= N[%, 30]
Out[2]= 1.41421356237309504880168872421

In[3]:= % - Sqrt[2]
Out[3]= 0.*10^-30


  • Prev by Date: Re: partial Dividers?
  • Next by Date: Re: Is there a simple way to transform 1.1 to 11/10?
  • Previous by thread: Re: Is there a simple way to transform 1.1 to 11/10?
  • Next by thread: Re: Is there a simple way to transform 1.1 to 11/10?