13,090,299 members (75,607 online)
Technical Blog
alternative version

#### Stats

98K views
13 bookmarked
Posted 12 Feb 2010

# C Round Function

, 12 Feb 2010
 Rate this:
It's really weird that the C math library (math.h) doesn't support the round function. This post shows how to create one in C. Pretty simple, but can save you little thinking :)

It’s really weird that the C math library (math.h) doesn’t support the round function. It only includes the floor function which rounds down a float to an integer (can also be done by implicit or explicit casting) and the ceil function which rounds the value up.

For example:

```int x;

x = floor(1.2);   //  x is set to 1
x = floor(1.8);   //  x is set to 1
x = (int)1.8;     //  x is set to 1 (Explicit Narrowing Conversion)
x = 1.8;          //  x is set to 1 (Implicit Narrowing Conversion)
x = ceil(1.2);    //  x is set to 2
x = ceil(1.8);    //  x is set to 2```

The round function is supposed to round the float value to the nearest integer.

```x = round(1.2);    //  x is set to 1
x = round(1.8);    //  x is set to 2```

This can be done adding a `0.5` to the value and then truncating it.

```x = (int)(1.2 + 0.5);  //  x is set to 1
x = (int)(1.8 + 0.5);  //  x is set to 2```

We also have to take negative values into consideration by adding `-0.5` and then truncating.

```x = (int)(-1.2 - 0.5);  //  x is set to -1
x = (int)(-1.8 - 0.5);  //  x is set to -2```

Thus, here is the resulting C function:

```int round(double number)
{
return (number >= 0) ? (int)(number + 0.5) : (int)(number - 0.5);
}```

Note that you might want to use long rather than int to include support for larger numbers and avoid integer overflow.

That’s it, pretty much primitive, but fun!

Enjoy!
Ali B

## Share

 Software Developer Qualtrics United States

## You may also be interested in...

 First Prev Next
 My variant... Young-Jin Chung8-Aug-14 12:52 Young-Jin Chung 8-Aug-14 12:52
 My vote of 4 huzemin27-Oct-10 1:26 huzemin 27-Oct-10 1:26
 Round Half to Even tyjnfghnfgsdf16-Oct-10 16:18 tyjnfghnfgsdf 16-Oct-10 16:18
 My vote of 5 sarodgl11-Aug-10 6:02 sarodgl 11-Aug-10 6:02
 Alternative rounding function basementman16-Feb-10 7:42 basementman 16-Feb-10 7:42
 Re: Alternative rounding function Member 448140722-Feb-10 14:42 Member 4481407 22-Feb-10 14:42
 Re: Alternative rounding function Member 420917517-Mar-10 21:44 Member 4209175 17-Mar-10 21:44
 Re: Alternative rounding function leon de boer6-Apr-10 6:16 leon de boer 6-Apr-10 6:16
 My rounding function Robert Steed29-Jun-14 23:40 Robert Steed 29-Jun-14 23:40
 vote of 4 Rozis12-Feb-10 10:51 Rozis 12-Feb-10 10:51