📜  C++中的rint(),rintf(),rintl()

📅  最后修改于: 2021-05-30 02:32:33             🧑  作者: Mango

rint()用于将浮点参数舍入为整数值(采用浮点格式)。您还可以使用函数fesetround()确定当前的舍入模式,根据该函数rint函数将返回舍入的整数值。

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

Header file :  cmath
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.

异常或错误
1.如果函数的结果超出返回类型的范围,则可能会发生域错误。
2.如果参数为0,则返回原样。
3.如果参数为infinite ,则返回原样。

例子:

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;
}

输出:

3
4

fesetround()函数

默认情况下,舍入方向设置为最接近的整数。但是使用fesetround()函数,我们可以选择方向。
句法 :

fesetround(FE_DOWNWARD)
fesetround(FE_UPWARD)
Header file : cfenv

例子 :

  • 如果将rint()函数与参数3.7一起使用,并且还使用了fesetround(FE_DOWNWARD),则输出为3
  • 如果将rint()函数与参数3.3一起使用,并且还使用了fesetround(FE_UPWARD),则输出为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;
}

输出:

3
4

rintf()函数

rintf()函数与rint函数相同。唯一的区别是函数的参数和返回类型为浮点型。附加到’rintf’的’f’字符代表float,它表示函数的参数类型和返回类型。

Syntax :
float rintf(float x);

在此,为变量分配了浮点类型,否则将发生类型不匹配错误。

// 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;
}

输出:

3
4

rintl()函数

rintl()函数是相同RINT函数。唯一的区别是,参数和返回类型的函数是长双type.The“L”字符附加到“rintl”代表长双和它表示参数类型和参数函数的返回类型。

Syntax : 
long double rintl(long double x);

在此,为变量分配了long double类型,否则会发生类型不匹配错误。

// 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;
}

输出:

3
4
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”