当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 ilogb用法及代码示例


C语言math头文件(math.h)中ilogb函数的用法及代码示例。

用法:

int ilogb  (double x);
int ilogbf (float x);
int ilogbl (long double x);
整数二进制对数
返回|的对数的整数部分x|,使用FLT_RADIX作为对数的底数。

这是 index 由机器内部使用以表示浮点值x,当它使用重要的之间1.0FLT_RADIX,以便x

x =有效位数* FLT_RADIXexponent

一般来说,FLT_RADIX2,并且此函数返回的值比 index 获得与frexp(由于不同重要的归一化为[1.0,2.0)代替[0.5,1.0))。

标头<tgmath.h>提供此函数的type-generic宏版本。
额外的过载在此头文件中提供(<cmath>) 为了整数类型:这些重载有效地转换x到一个double计算之前(为T有任何整数类型)。

此函数可能会返回两个特定的宏常量,以指示以下特殊情况:
描述
FP_ILOGB0x是零
FP_ILOGBNANx是NaN

这些宏常量是在同一标头中定义的(<cmath>)。

参数

x
值谁博客返回。

返回值

如果x 是正常的,基地FLT_RADIX的对数x
如果x是次正规的,返回的值是对应于规范化表示的值(负数) index )。
如果x为零,则返回FP_LOGB0(一个特殊值,仅由该函数返回,定义为<cmath>)。
如果x是无限的,它会返回INT_MAX
如果x是NaN,则返回FP_ILOGBNAN(一个特殊值,仅由该函数返回,定义为<cmath>)。
如果结果的大小太大而无法用返回类型的值表示,则该函数返回一个未指定的值,并溢出范围误差发生。
的零,无穷或NaN值x可能还会导致域错误或溢出范围误差

如果域错误发生:
- 和math_errhandlingMATH_ERRNO设置:全局变量errno被设定为EDOM
- 和math_errhandlingMATH_ERREXCEPT设置:FE_INVALID被抛出

如果溢出范围误差发生:
- 和math_errhandlingMATH_ERRNO设置:全局变量errno被设定为ERANGE
- 和math_errhandlingMATH_ERREXCEPT设置:FE_OVERFLOW被抛出

示例

/* ilogb example */
#include <stdio.h>      /* printf */
#include <math.h>       /* ilogb */

int main ()
{
  double param;
  int result;

  param = 10.0;
  result = ilogb (param);
  printf ("ilogb(%f) = %d\n", param, result);
  return 0;
}


输出:

ilogb(10.000000) = 3

相关用法


注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C ilogb function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。