Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Fraction conversion

  1. Apr 28, 2004 #1
    What is the best way to convert a fraction into a decimal. IE: 3/8?
     
  2. jcsd
  3. Apr 28, 2004 #2

    turin

    User Avatar
    Homework Helper

    Maybe you could devise a pseudo program.

    Let a < b. To convert a/b to a decimal:

    Line 1: Set the whole number m = 1.
    Line 2: Set the array element n[m] = 9.
    Line 3: Set the real number x = b*n[m] - a*10m.
    Line 4: If x > 0, then decrement n[m] and go back to Line 3. Otherwise, set a = -x, b = b*10m, increment m, and go back to Line 2.

    The decimal is 0.n[1]n[2]n[3]n[4]n[5]...

    That is, the decimal is a "0." followed by the juxtaposition of the array elements of n[.] in ascending order.

    OK, I think I got that pseudo program to make sense now.



    Following the program for 3/8:

    m = 1
    n[1] = 9
    x = 8*9 - 3*101 = 42
    :
    :
    eventually, n[1] = 3
    x = 8*3 - 3*101 = -6
    a = 6
    b = 8*101 = 80
    m = 2
    n[2] = 9
    x = 80*9 - 6*102 = 120
    :
    :
    eventually, n[2] = 7
    x = 80*7 - 6*102 = -40
    a = 40
    b = 80*102 = 8000
    m = 3
    n[3] = 9
    x = 8000*9 - 40*103 = 32000
    :
    :
    eventually, n[3] = 5
    x = 8000*5 - 40*103 = 0
    a = 0
    b = 8000*103 = 8E6
    m = 4
    n[4] = 9
    x = 8E6*9 - 0*104 = 7.2E7
    :
    :
    which obviously will yield a zero for every other digit found

    This procedure has given:
    n[1] = 3, n[2] = 7, n[3] = 5, n[m>3] = 0
    in accordance with the calculator.
     
    Last edited: Apr 28, 2004
  4. Apr 28, 2004 #3
    The easiest way is to just long divide until you start getting 0's or you satisfy the number of digits you need.

    cookiemonster
     
  5. Apr 28, 2004 #4
    I'm with cookiemonster on this one. You should be able to spot a pattern if you start repeating.
     
  6. Apr 28, 2004 #5

    turin

    User Avatar
    Homework Helper

    I was under the impression (though I wouldn't be surprised to be mistaken) that division would be an undesirable feature.
     
  7. Apr 28, 2004 #6
    Yeah, I can see that. If division is not an option, your program may be a viable option.
     
  8. Apr 28, 2004 #7

    Integral

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    In many cases the computers approximation to the correct result may not be desirable. Consider what happens if the rational number results in a repeating pattern which is not fully developed within the precision of your software? You need some method of computing digits unconstrained by the computers word length. Windows generates about 15 decimal digits so any fraction which requires more digits then this cannot be precisely computed by windows. I once created an Excel spreadsheet which generated decimal representation of a fraction to however many digits you wanted. Unfortunately, as I sit typing this, I cannot recall the algorithm I used. May have been very similar to that presented by Turin.

    BTW, I believe that an application of the Pigeon Hole principle revels that the magnitude of the denominator gives the maximum possible number of digits in the decimal representation. (That is number of digits in which the result must terminate or being repeating.
     
  9. Apr 29, 2004 #8

    ShawnD

    User Avatar
    Science Advisor

    It's not a Windows restriction, it's C/C++ restriction. If you want a variable to have more than 15 digits, it has to be an array (which would be incredibly hard on memory). Here is a table of C++ variable types.
    variable types
     
  10. Apr 29, 2004 #9

    turin

    User Avatar
    Homework Helper

    Matlab liked my program. I put it in an m-file and ran it just for kicks. You can set the maximum m value to whatever you want. I think the program should be modified to truncate the excessive amount of traling zeros that one would incur for large numbers of decimal places (using my algorithm).
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Fraction conversion
  1. A fraction (Replies: 1)

  2. Fraction of a fraction (Replies: 16)

  3. Gradient conversions (Replies: 3)

  4. Conversion rate (Replies: 3)

Loading...