Home C&C++函数库 c++ 语法 程序源码 Linux C库

llrint

函数  <cmath> <ctgmath>

C99 long long int llrint (double x);
long long int llrintf (float x);
long long int llrintl (long double x);
C++11 long long int llrint (double x);
long long int llrint (float x);
long long int llrint (long double x);
long long int llrint (T x);        // additional overloads for integral types

舍入并强制转换为long long integer
使用fegetround指定的舍入方向将x舍入为整数值,并将其作为long long int类型的值返回。
参见lrint获取返回长int型的等效函数。
C99 头文件<tgmath.h> 提供了该函数的类型泛型宏版本。
C++11 这个头文件(<cmath>)为整型提供了额外的重载: 这些重载有效地在计算之前将x转换为double(在T是任何整型时定义)。

☲  参数


x
舍入的值

☉  返回值



x的值舍入为附近的整数,转换为long long int类型的值。
如果舍入值超出了返回类型的范围,则返回的值是未指定的, 并且可能发生域错误或溢出范围错误(或没有错误,取决于实现)。

如果出现域错误:
-并且math_errhandling设置了MATH_ERRNO: 全局变量errno设置为EDOM。
-并且math_errhandling设置了MATH_ERREXCEPT: 触发FE_INVALID

如果发生溢出范围错误:
-并且math_errhandling设置了MATH_ERRNO:全局变量errno设置为ERANGE。
-并且math_errhandling设置了MATH_ERREXCEPT:触发FE_OVERFLOW

☣  示例



/* llrint example */
#include <stdio.h>      /* printf */
#include <fenv.h>       /* fegetround, FE_* */
#include <math.h>       /* llrint */

int main ()
{
  printf ("rounding using ");
  switch (fegetround()) {
    case FE_DOWNWARD: printf ("downward"); break;
    case FE_TONEAREST: printf ("to-nearest"); break;
    case FE_TOWARDZERO: printf ("toward-zero"); break;
    case FE_UPWARD: printf ("upward"); break;
    default: printf ("unknown");
  }
  printf (" rounding:\n");

  printf ( "llrint (2.3) = %lld\n", llrint(2.3) );
  printf ( "llrint (3.8) = %lld\n", llrint(3.8) );
  printf ( "llrint (-2.3) = %lld\n", llrint(-2.3) );
  printf ( "llrint (-3.8) = %lld\n", llrint(-3.8) );
  return 0;
}

可能输出:
Rounding using to-nearest rounding:
llrint (2.3) = 2
llrint (3.8) = 4
llrint (-2.3) = -2
llrint (-3.8) = -4

🍄  另请参阅



ceil 向上舍入(function )
floor 向下舍入(function )
trunc 截断(function )
rint 舍入并强制转换为整数(function )
nearbyint 舍入到最近的整数值(function )
round 就近舍入(function )

联系我们 免责声明 关于CandCplus 网站地图