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: [mg92998] Re: Is there a simple way to transform 1.1 to 11/10?
  • From: Bill Rowe <readnews at sbcglobal.net>
  • Date: Wed, 22 Oct 2008 05:39:46 -0400 (EDT)

On 10/21/08 at 6:24 AM, alain at geophysik.uni-muenchen.de (Alain
Cochard) wrote:

>I searched the newsgroup and thought I had the solution with
>Rationalize:
>
>In[5]:= Rationalize[1.1,0]
>
>Out[5]= 11/10

>But

>In[9]:= Rationalize[1.000000001,0]

>Out[9]= 999999917/999999918

>In[10]:= N[%,20]

>Out[10]= 1.0000000010000000830

>So any simple way?

Here is one way to achieve what you want.

In[24]:= f[x_] :=
  Module[{r = Rationalize[x, 0], p},
   p = Round@Log[10, Denominator[r]];
   Round[r 10^p]/10^p]

In[25]:= f[1.000000001]

Out[25]= 1000000001/1000000000

I did a few quick tests and this seems to work correctly for
other values. But I have not done extensive testing of this function.

Undoubtedly, the issue with Rationalize[1.000000001,0] is the
nearest machine number to 1000000001/1000000000//N is closer to
999999917/999999918 than 1000000001/1000000000. This issue
(closest machine number) likely impacts the function I created
above as well in a manner not easily predicted. That is, I
suspect for some values the function above will not output what
you expect or desire.


  • Prev by Date: Re: Is there a simple way to transform 1.1 to 11/10?
  • Next by Date: Re: Executing an external notebook within another notebook
  • Previous by thread: Re: 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?