Related Articles

# rint(), rintf(), rintl() in C++

• Difficulty Level : Basic
• Last Updated : 16 Nov, 2017

rint() is used to round of the floating-point argument to an integer value (in floating-point format). You can also determine the current rounding mode using a function fesetround() according to which the rint function returns the rounded integer value.

```Syntax
double rint(double x);
float rint(float x);
long double rint(long double x);

Parameters :  The rint() function takes a single
argument value to round.

Returns :   By default, the rounding direction is set to
'to-nearest' otherwise the rint() function rounds the argument
to an integral value, using the rounding direction
specified by fegetround() and returns the value.
```

Exceptions or Errors
1. If the result of the function is outside the range of the return type, a domain error error may occur.
2. If the argument is 0, it is returned unmodified.
3. If the argument is infinite, it is returned unmodified.

Examples:

```Input : 3.3
Output : 3

Input : 3.5
Output : 4

Input : 3.7
Output : 4
```
 `// CPP program to illustrate rint()``#include ``#include ``using` `namespace` `std;``// Driver Program``int` `main()``{``    ``double` `a, b, x = 3.3, y = 3.7;`` ` `    ``// Saves the rounded value to a variable``    ``a = rint(x);``    ``b = rint(y);`` ` `    ``// Prints the rounded value``    ``cout << a << endl;`` ` `    ``cout << b;``    ``return` `0;``}`

Output:

```3
4
```

fesetround() function

By default, the rounding direction is set to the nearest integer. But using fesetround() function, we can the direction of our choice.
Syntax :

```fesetround(FE_DOWNWARD)
fesetround(FE_UPWARD)

Example :

• If rint() function is used with argument 3.7 and fesetround(FE_DOWNWARD) is also used, the output would be 3
• If rint() function is used with argument 3.3 and fesetround(FE_UPWARD) is also used, the output would be 4
 `// CPP program to illustrate rint()``// with fesetround() function``#include ``#include ``#include ``using` `namespace` `std;``// Driver Program``int` `main()``{``    ``double` `x = 3.7, y = 3.3, result;`` ` `    ``// setting rounding direction to DOWNWARD``    ``fesetround(FE_DOWNWARD);`` ` `    ``result = rint(x);``    ``cout << result << endl;`` ` `    ``// setting rounding direction to UPWARD``    ``fesetround(FE_UPWARD);`` ` `    ``result = rint(y);``    ``cout << result << endl;`` ` `    ``return` `0;``}`

Output:

```3
4
```

rintf() function

rintf() function is same as the rint function. The only difference is that the parameter and return type of the function is float type. The ‘f‘ character appended to ‘rintf‘ stands for float and it signify the parameter type and return type of the function.

```Syntax :
float rintf(float x);
```

Here, variables are assigned float type otherwise type mismatch error occurs.

 `// CPP program to illustrate rinft()``#include ``#include ``#include ``using` `namespace` `std;``// Driver Program``int` `main()``{``    ``float` `x = 3.76542, y = 3.37562, result;``    ``// setting rounding direction to DOWNWARD``    ``fesetround(FE_DOWNWARD);`` ` `    ``result = rintf(x);``    ``cout << result << endl;`` ` `    ``// setting rounding direction to UPWARD``    ``fesetround(FE_UPWARD);`` ` `    ``result = rintf(y);``    ``cout << result << endl;`` ` `    ``return` `0;``}`

Output:

```3
4
```

rintl() function

rintl() function is same as the rint function.The only difference is that the parameter and return type of the function is long double type.The ‘l‘ character appended to ‘rintl‘ stands for long double and it signify the parameter type and return type of the function.

```Syntax :
long double rintl(long double x);
```

Here, variables are assigned long double type otherwise type mismatch error occurs.

 `// CPP program to illustrate rinfl()`` ` `#include ``#include ``#include ``using` `namespace` `std;`` ` `// Driver Program``int` `main()``{``    ``long` `double` `x = 3.765426764, y = 3.37562657, result;`` ` `    ``// setting rounding direction to DOWNWARD``    ``fesetround(FE_DOWNWARD);`` ` `    ``result = rintl(x);``    ``cout << result << endl;`` ` `    ``// setting rounding direction to UPWARD``    ``fesetround(FE_UPWARD);`` ` `    ``result = rintl(y);``    ``cout << result << endl;`` ` `    ``return` `0;``}`

Output:

```3
4
```
Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for foundation plus STL.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up