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


C語言 scalbln用法及代碼示例

C語言math頭文件(math.h)中scalbln函數的用法及代碼示例。

用法:

     double scalbln  (double x     , long int n);
      float scalblnf (float x      , long int n);
long double scalblnl (long double x, long int n);
使用浮點基 index (長)縮放有效位數
縮放x經過FLT_RADIX提升到n,返回計算結果:

scalbn(x,n)= x *FLT_RADIXn

假定xn是係統中浮點數的組成部分;在這種情況下,可以優化此函數以使其比理論上顯式計算值的效率更高。

此函數還存在另一個版本:scalbn,這是相同的,除了它需要一個int作為第二個論點。

標頭<tgmath.h>提供此函數的type-generic宏版本。
額外的過載在此頭文件中提供(<cmath>) 為了整數類型:這些重載有效地轉換x到一個double計算之前(為T有任何整數類型)。

參數

Value representing the significand.</dd>
exp
價值 index

返回值

返回x*FLT_RADIXn
如果結果的大小太大而無法用返回類型的值表示,則該函數將返回HUGE_VAL(或者HUGE_VALF或者HUGE_VALL)並帶有適當的符號,並且溢出範圍誤差可能會發生(如果太小,該函數將返回零,並且下溢範圍誤差可能導致)。

如果一個範圍誤差發生:
- 和math_errhandlingMATH_ERRNO設置:全局變量errno被設定為ERANGE
- 和math_errhandlingMATH_ERREXCEPT設置:或者FE_OVERFLOW或者FE_UNDERFLOW被拋出

示例

/* scalbln example */
#include <stdio.h>      /* printf */
#include <float.h>      /* FLT_RADIX */
#include <math.h>       /* scalbn */

int main ()
{
  double param, result;
  long n;

  param = 1.50;
  n = 4L;
  result = scalbln (param , n);
  printf ("%f * %d^%d = %f\n", param, FLT_RADIX, n, result);
  return 0;
}


輸出:

1.500000 * 2^4 = 24.000000

相關用法


注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C scalbln function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。