C++ Reference: Standard C++ Library reference: C Library: cmath: ilogb

C++官网参考链接:https://cplusplus.com/reference/cmath/ilogb/

函数
<cmath> <ctgmath>
ilogb
C99
int ilogb(double x);
int ilogbf(float x);
int ilogbl(long double x);
C++11
int ilogb(double x);
int ilogb(float x);
int ilogb(long double x);
int ilogb (T x);   // additional overloads for integral types

计算以浮点基数为底数的对数
返回|x|的对数的整数部分,使用FLT_RADIX作为对数的底数。
这是机器内部用来表示浮点值x的指数,当它使用1.0到FLT_RADIX之间的有效值时,因此,对于正的x: 
x = 有效值 * FLT_RADIX^指数
通常,FLT_RADIX为2,该函数返回的值比frexp获得的指数小1(由于不同的有效值规范化为[1.0,2.0)而不是[0.5,1.0))。
C99
头文件<tgmath.h>提供了该函数的泛型类型的宏版本。
C++11
在此头文件(<cmath>)中为整型(integral types:)提供了额外的重载:这些重载在计算之前有效地将x转换为double类型(定义为T为任何整型(integral types:))。
这个函数可以返回两个特定的宏常量来表示以下特殊情况:

macro(宏)description(描述)
FP_ILOGB0x is zero(x是零)
FP_ILOGBNANx is NaN(x不是一个数)

这些宏常量在同一个头文件(<cmath>)中定义。

形参
x
返回x的ilogb的值。

返回值
如果x是正常值(is normal),则返回x的基于FLT_RADIX的对数。
如果x是非正常值,则返回的值对应于规范化表示(负指数)。
如果x为0,则返回FP_LOGB0(一个特殊值,仅由此函数返回,定义在<cmath>中)。
如果x是无穷的,则返回INT_MAX
如果x是NaN,则返回FP_ILOGBNAN(一个特殊值,仅由此函数返回,定义在<cmath>中)。
如果结果的绝对大小太大,无法用返回类型的值表示,则函数返回未指定的值,并发生上溢范围错误。
x为0、无穷或NaN值也可能导致定义域错误或上溢范围错误。 
如果发生定义域错误: 
math_errhandling具有MATH_ERRNO集合:全局变量errno设置为EDOM
math_errhandling具有MATH_ERREXCEPT集合:将引发FE_INVALID
如果发生上溢范围错误: 
math_errhandling具有MATH_ERRNO集合:全局变量errno设置为ERANGE
math_errhandling具有MATH_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;

输出:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_40186813

你的能量无可限量。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值