# Display decimal as a fraction?

The number 1.5 represents 3/2 in decimal form.

In sage I can get 3/2 to display as a decimal: 3/2.n()

I haven't had any luck converting 1.5 to a fraction.

edit retag close merge delete

Sort by » oldest newest most voted

answered 2016-03-01 01:59:46 +0200

This post is a wiki. Anyone with karma >750 is welcome to improve it.

1.5 equals to 1 1/2 .

more

I ran across another way that's posted here where the author, John D Cook mentions the nsimplify command in SymPy (which you can can access in Sage). As the post indicates, you can suggest constants (eg pi) that should be considered and "...can also give nsimplify a tolerance, asking it to find a simple representation within a neighborhood of the number". Here's a screenshot of it recognizing 1.3333333333333 in a Sage Cell Server.

more

You can try:

sage: QQ(1.5)
3/2


or:

sage: (1.5).exact_rational()
3/2


As a warning, i let you undertand the following behaviour with decimal numbers:

sage: (1.1).exact_rational()
2476979795053773/2251799813685248

more

Thank you. But what about numbers such as 4/3, that outputs .3333 to an infinity?

( 2013-06-30 20:51:05 +0200 )edit

You will get: sage: RR(4/3) 1.33333333333333 sage: QQ(RR(4/3)) 4/3 sage: RR(4/3).exact_rational() 6004799503160661/4503599627370496

( 2013-06-30 20:55:59 +0200 )edit

So there's no way to convert/simplify, 1.33333333333333, to 4/3 instead of that last humongous number?

( 2013-06-30 21:17:05 +0200 )edit
2

Nope. It is related to precision problems. See this for example: sage: 0.1 + 0.1 + 0.1 == 0.3 False

( 2013-07-01 12:52:11 +0200 )edit
3

Indeed. 4/3 is not a floating-point number since it can not be written as p/2^q. So, when you write sage: a = RR(4/3) You only get an approximation of 4/3, whose value is sage: a.exact_rational() 6004799503160661/4503599627370496 If you want to recover 4/3 from a, you can do sage: a.simplest_rational() 4/3 or, sage: QQ(a) 4/3 But you should understand that two roundings were done during your computation, and that you may have lost something there.

( 2013-07-01 19:31:19 +0200 )edit