Decimals to fraction strings

Stuart D. Gathman stuart at bmsi.com
Tue May 16 19:33:48 CEST 2000


Scott wrote:

> Does anyone know of a way to convert decimal numbers to a string
> representation of the fractional value? For example:
> 0.5 = "1/2"
> or
> 1.125 = "1 1/8"

1) Convert to a fraction by counting places after the decimal:

    0.5 -> 5 / 10
    1.125 -> 1125 / 1000
    2.6 -> 26 / 10
    3.14156295 = 314159265 / 100000000

2) Divide top and bottom by their GCD (greatest common divisor):

    5 / 10 -> 1 / 2
    1125 / 1000 -> 9 / 8
    26 / 10 -> 13 / 5
    314159265 / 100000000 -> 62831853 / 20000000

3) If desired (I don't), convert to mixed notation when num > den by
finding quotient and remainder of num / den:

    9 / 8 -> 1 rem 1 -> 1 1/8
   13 / 5 -> 2 rem 3 -> 2 3/5
    62831853 / 20000000 -> 3 2831853/20000000






More information about the Python-list mailing list