log、logf、log10、log10f

计算对数。

double log( 
   double x  
); 
float log( 
   float x 
);  // C++ only 
long double log( 
   long double x 
);  // C++ only 
float logf( 
   float x  
); 
double log10( 
   double x 
); 
float log10( 
   float x 
);  // C++ only 
long double log10( 
   long double x 
);  // C++ only 
float log10f ( 
   float x 
);

参数

  • x
    对数中找到的值。

返回值

如果成功,则 日志 函数返回 x 的自然对数(以e为底数)。 log10 函数返回 10 为底的对数。 如果 x 为负,默认情况下这些函数返回一个不定数。 如果 x 为 0, 则返回 INF (无穷大)。

输入

SEH 异常

Matherr 异常

± QNAN,IND

_DOMAIN

± 0

ZERODIVIDE

_SING

x < 0

无效

_DOMAIN

loglog10 具有使用 Streaming SIMD Extensions 2(SSE2) 的实现方法。 有关使用 SSE2 实现的信息和限制,请参阅 _set_SSE2_enable

备注

C++ 允许重载,因此可以调用 loglog10 的重载函数。 在 C 程序中,loglog10 始终采用并返回一个双精度数。

要求

例程

必需的标头

log, logf, log10, log10f

<math.h>

有关其他兼容性信息,请参见“简介”中的兼容性

C 运行时库的所有版本。

示例

// crt_log.c
/* This program uses log and log10
 * to calculate the natural logarithm and
 * the base-10 logarithm of 9,000.
 */

#include <math.h>
#include <stdio.h>

int main( void )
{
   double x = 9000.0;
   double y;

   y = log( x );
   printf( "log( %.2f ) = %f\n", x, y );
   y = log10( x );
   printf( "log10( %.2f ) = %f\n", x, y );
}

Output

log( 9000.00 ) = 9.104980
log10( 9000.00 ) = 3.954243

若要产生其他基数的对数,使用数学关系:log base b of a == natural log (a) / natural log (b) 。

// logbase.cpp
#include <math.h>
#include <stdio.h>

double logbase(double a, double base)
{
   return log(a) / log(base);
}

int main()
{
   double x = 65536;
   double result;

   result = logbase(x, 2);
   printf("Log base 2 of %lf is %lf\n", x, result);
}

Output

Log base 2 of 65536.000000 is 16.000000

.NET Framework 等效项

请参见

参考

浮点支持

exp、expf

_matherr

pow、powf、powl

_CIlog

_CIlog10