當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。