C++ 中的 rint()、fesetround()、rintf()、rintl()
我们将在本文中讨论 C++ 中的 rint()、fesetround()、rintf() 和 rintl() 函数。
1) rint():它 用于将浮点参数四舍五入为整数值(浮点格式)。您还可以使用函数fesetround()确定当前舍入模式,rint 函数根据该函数返回舍入的整数值。它包含在
句法:
double rint(double x);
float rint(float x);
long double rint(long double x);
参数: rint()函数采用单个参数值进行舍入。
返回:默认情况下,舍入方向设置为“到最近”,否则 rint()函数使用 fegetround() 指定的舍入方向将参数舍入为整数值并返回该值。
异常或错误:
- 如果函数的结果超出返回类型的范围,可能会出现域错误错误。
- 如果参数为 0,则原样返回。
- 如果参数是无限的,它会原封不动地返回。
例子:
Input : 3.3
Output : 3
Input : 3.5
Output : 4
Input : 3.7
Output : 4
CPP
// CPP program to illustrate rint()
#include
#include
using namespace std;
// Driver Code
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;
}
CPP
// CPP program to illustrate rint()
// with fesetround() function
#include
#include
#include
using namespace std;
// Driver Code
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;
}
CPP
// CPP program to illustrate rinft()
#include
#include
#include
using namespace std;
// Driver Code
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;
}
CPP
// CPP program to illustrate rinfl()
#include
#include
#include
using namespace std;
// Driver Code
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;
}
3
4
2) fesetround()函数:默认情况下,舍入方向设置为最接近的整数。但是使用 fesetround()函数,我们可以选择我们的方向。它包含在
句法:
fesetround(FE_DOWNWARD)
fesetround(FE_UPWARD)
例子:
- 如果 rint()函数与参数 3.7 一起使用,并且还使用 fesetround(FE_DOWNWARD),则输出将为 3
- 如果 rint()函数与参数 3.3 一起使用,并且还使用 fesetround(FE_UPWARD),则输出将为 4
CPP
// CPP program to illustrate rint()
// with fesetround() function
#include
#include
#include
using namespace std;
// Driver Code
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;
}
3
4
3) rintf()函数: rintf()函数与 rint函数相同。唯一的区别是函数的参数和返回类型是浮点类型。 'rintf' 后面的 'f'字符代表浮点数,它表示函数的参数类型和返回类型。
句法:
float rintf(float x);
在这里,变量被分配为浮点类型,否则会发生类型不匹配错误。
CPP
// CPP program to illustrate rinft()
#include
#include
#include
using namespace std;
// Driver Code
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;
}
3
4
4) rintl()函数: rintl()函数与rint函数相同,唯一不同的是函数的参数和返回类型为long double类型。'rintl'后面的'l'字符代表long double它表示函数的参数类型和返回类型。
句法:
long double rintl(long double x);
在这里,变量被分配了 long double 类型,否则会发生类型不匹配错误。
CPP
// CPP program to illustrate rinfl()
#include
#include
#include
using namespace std;
// Driver Code
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;
}
3
4