C Program to Round off Decimal or Floating-point Number

In this tutorial, we will learn about how to create a program in C that will ask from user to enter any number (any real or floating-point number) to round it off to its nearest integer. For example, if user has provided 23.43 as input, then the program will output its nearest integer value that will be 23. Let's take a look at the program:

#include<stdio.h>
#include<conio.h>
int main()
{
    float num;
    int tempCheck, roundNum, tempNum;
    printf("Enter the number: ");
    scanf("%f", &num);
    if(num>0)
    {
        tempNum = num*10;
        tempCheck = tempNum%10;
        if(tempCheck>=5)
        {
            roundNum = num;
            roundNum++;
        }
        else
        {
            roundNum = num;
        }
        printf("\nWhole number after rounding off the given real number = %d", roundNum);
    }
    else if(num<0)
    {
        num = -(num);
        tempNum = num*10;
        tempCheck = tempNum%10;
        if(tempCheck>=5)
        {
            roundNum = num;
            roundNum--;
        }
        else
        {
            roundNum = num;
        }
        printf("\nWhole number after rounding off the given real number = -%d", roundNum);
    }
    else
    {
        printf("\nThe given number is 0");
    }
    getch();
    return 0;
}

As the above program was written under Code::Blocks IDE, therefore after successful build and run, you will get the similar output as given below. This is the first snapshot of the sample run:

c program round off integer

Now supply any real number say 37.5 and press ENTER key to see the nearest integer (whole number) value of the given real number:

round off to nearest integer

Here is another sample run of the above program, this time let's suppose user has provided the real number say -25.56 as input:

rounding off to nearest value c program

Here are the list of some main steps used in above program:

  • Receive any real-number as input
  • Now Use two if statement to round it off. One if user has provided a real number which is positive. Second when user has supplied the real number which is negative
  • Now if the given number is a positive number, then multiply the number with 10 and initialize it to a variable say tempNum. Then find the remainder of tempNum (by dividing with 10) and initialize it to another variable say tempCheck. Check whether tempCheck variable holds the value which is greater than 5 or not. If it is, then initialize the value of num to another variable say roundNum and increment it by 1. Then at last print the value of roundNum which will be the nearest integer value of the given number (by user at run-time)
  • And if the given number is a negative number, then first make it a positive number just by multiplying the number with minus (-) operator. Do the same steps as done in case of positive number except that, this time we have to decrement the value of roundNum, as in case of negative number greater the number means smaller the value. That is 34 is greater than 33, but -34 is less than -33
  • For example, if user has supplied 33.45 as input
  • Then program flow goes inside the first if block as 33.45 is greater than 0
  • Inside the if block, num*10 or 33.45*10 or 334.5 will be initialized to tempNum and tempNum%10 or 334.5%10 or 4 will be initialized to tempCheck
  • Note - Here we have multiplied the number with 10 and then applied the modulous operator (%) to make the first digit present after decimal will come before decimal. So that we becomes able to check the number by using modulous operator that whether the number is greater than or equal to 5 or not (that present after decimal). That is if the number is greater than or equal to 5, then we have to increment the value and print it as nearest integer of given number, and if the number is less than 5, then print the number as it is (without having decimal part)
  • Now come to the example, as tempCheck holds 4 which is less than 5, therefore the program flow goes inside the else block and num will be initialized to roundNum. And print the value of roundNum
  • And if user has provided -34.67 as input, then as the number is less than 0, then the program flow goes inside the else if block
  • The number is multiplied with minus operator (-) and initialized to the number itself, that is -(num) or -(-34.67) or 34.67 will be initialized to num. And num*10 or 34.67*10 or 346.7 will be initialized to tempNum, tempNum%10 or 346.7%10 or 6 will be initialized to tempCheck.
  • As the tempCheck variable holds the value which is greater than 5, therefore program flow goes inside the if block and num will be initialized to roundNum and the value gets decremented. Finally print the value which will be 33 as output

C Online Test


« Previous Program Next Program »