1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

C program: storing rounded float to int variable

  1. Jun 16, 2004 #1

    Math Is Hard

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    I've been frustrated for a couple of days over a C programming assignment:

    "Convert the float value tot_bill (in dollars and cents) to integer dollars in tot_doll and integer cents in tot_cents. Make sure that the cents value is rounded, not truncated."

    I am assuming that we should take a value like 12.37 cents and store the values in two integer variables. The tot_doll value should contain the value 12. That's easy enough to do - conversion to an integer will take care of that.
    The tot_cents should contain a value of 37. That's not so bad unless instead of 12.37, I have a value of 12.378.

    How do I get the rounded value from a float (.378) into an integer variable so I can store 38 for the integer tot_cents?

    I thought about storing 378 as an integer value and then using a conversion modifier to convert on the fly to a value of 38 when I print, but I don't know if that's what's expected (or if it's even possible).

    I am probably making this a lot harder than it is.

    Thanks!!
     
  2. jcsd
  3. Jun 16, 2004 #2

    chroot

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

  4. Jun 16, 2004 #3

    Math Is Hard

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Thanks, chroot!
     
  5. Jun 17, 2004 #4

    Math Is Hard

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    here's what I ended up doing

    I'm sure it could have been done in less steps I think but this seemed to get the job done. I am not quite sure how the rounding function differs between math.h and stdlib.h or if they are essentially the same. My teacher had suggested using math.h for rounding, so I gave that a try.

    #include <stdio.h>
    #include <math.h>

    int main(void)
    {
    float tot_bill = 35.6777;
    int tot_doll = tot_bill;
    // just stores the dollars as integer value - truncates
    float leftover = (tot_bill - tot_doll)*100;
    //gets cents leftover, moves decimal place 2 to right
    int tot_cents = ceil(leftover);
    //rounds up the xx.xxx decimal made in last step
    //to next closest integer, stores as int.

    printf("This is the unrounded bill: %f \n", tot_bill);
    printf("These are the total dollars: %d \n", tot_doll);
    printf("These are the rounded total cents: %d \n", tot_cents);

    return 0;
    }
     
  6. Jun 17, 2004 #5

    Math Is Hard

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    and the output is...

    This is the unrounded bill: 35.677700
    These are the total dollars: 35
    These are the rounded total cents: 68
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: C program: storing rounded float to int variable
  1. C program: fopen() (Replies: 8)

  2. C program issues (Replies: 2)

  3. C++ Program Ideas (Replies: 9)

Loading...