Circumference of circle to many decimal places


Closed Thread
Results 1 to 11 of 11

Hybrid View

  1. #1
    Join Date
    Aug 2003
    Posts
    985


    Did you find this post helpful? Yes | No

    Default Re: Circumference of circle to many decimal places

    Code:
    // input ASCII into input array
        // check ASCII numeric range (0x30-0x39 & 0x2E) here, and subtract 0x30 for all but 0x2E
        // rotate input array left until the decimal point is aligned with twopi array
    
        unsigned int input = 100; // 2:45am cheat
        unsigned char twopi[19] = { 0x00,0x00,0x00,0x06,0x02,0x08,0x03,0x01,0x08,0x05,0x03,0x00,0x07,0x01,0x07,0x09,0x05,0x09,0x00 };
        unsigned char otput[19] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
        int adcnt = 0; // counter
        unsigned char dgcnt = 0; // digit index
        unsigned char carry = 0; // carry digit
        while (adcnt < input) { // multiply through addition
            dgcnt = 17; carry = 0;
            while (dgcnt > 0) { // cycle the digits
                otput[dgcnt] = otput[dgcnt] + twopi[dgcnt] + carry; carry = 0;// add digit
                if (otput[dgcnt] > 9) { otput[dgcnt] = otput[dgcnt] - 10; carry = 1; } // carry digit
                dgcnt--;
            } // dgcnt
            if (carry != 0) { otput[dgcnt] = otput[dgcnt] + 1; }
            adcnt++;
        } // adcnt
        twopi[18] = 0x00; // terminate string
        printf("%d%d%d%d.%d%d%d%d%d%d",otput[0],otput[1],otput[2],otput[3],otput[4],otput[5],otput[6],otput[7],otput[8],otput[9]);
    
            // answer: 1884.9555921538758

  2. #2
    Join Date
    Aug 2003
    Posts
    985


    Did you find this post helpful? Yes | No

    Default Re: Circumference of circle to many decimal places

    But in C, since you usually have math.h with floating point, you wouldn’t actually do that.
    This was part of a challenge with strict constraints.

    To do it in C, it’s:
    Code:
    float circ;
    float radius;
    const float pi = 3.1415; // or however far you want to take it
    
    radius = 10.0
    circ = (2*pi)*radius;

  3. #3
    Join Date
    Aug 2011
    Posts
    460


    Did you find this post helpful? Yes | No

    Default Re: Circumference of circle to many decimal places

    const float pi = 3.1415; // or however far you want to take it
    With a single precision float that's about as far as you can take it... 6-7 digits.

    You'll almost certainly never get the 17 digit answer.

Similar Threads

  1. Want to display less decimal places on LCD from 16bit ADC
    By Ryan7777 in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 12th June 2015, 23:14
  2. Replies: 2
    Last Post: - 8th April 2012, 16:11
  3. How long does this circle take?
    By IAmTheAnswer in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 9th May 2010, 16:14
  4. Bcd-->Decimal please help
    By memo333 in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 18th January 2006, 12:27
  5. Decimal value
    By leonel in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 7th April 2005, 17:39

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts