Ask Your Question

Display decimal as a fraction?

asked 2013-06-30 20:32:27 +0200

bxdin gravatar image

updated 2016-03-08 21:01:33 +0200

FrédéricC gravatar image

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 flag offensive close merge delete

3 Answers

Sort by » oldest newest most voted

answered 2013-06-30 20:36:27 +0200

tmonteil gravatar image

updated 2013-06-30 20:44:19 +0200

You can try:

sage: QQ(1.5)


sage: (1.5).exact_rational()

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

sage: (1.1).exact_rational()
edit flag offensive delete link more


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

bxdin gravatar imagebxdin ( 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

tmonteil gravatar imagetmonteil ( 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?

bxdin gravatar imagebxdin ( 2013-06-30 21:17:05 +0200 )edit

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

ppurka gravatar imageppurka ( 2013-07-01 12:52:11 +0200 )edit

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.

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

answered 2013-09-15 16:18:19 +0200

dazedANDconfused gravatar image

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. image description

edit flag offensive delete link more

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

this post is marked as community wiki

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

1.5 equals to 1 1/2 .

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools


Asked: 2013-06-30 20:32:27 +0200

Seen: 30,374 times

Last updated: Sep 15 '13