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
其對數是要尋找的值。
傳回值
記錄檔 函式傳回的自然對數 (基底 e) 的 x 如果執行成功。 Log10 函式傳回的基底 10 對數。 如果 x 是負值,這些函數會傳回沒有限制,根據預設值。 如果 x 為 0,就會傳回 INF (無限)。
輸入 |
SEH 例外狀況 |
Matherr 例外狀況 |
---|---|---|
± QNAN 尋找 |
無 |
_DOMAIN |
± 0 |
ZERODIVIDE |
_SING |
x < 0 |
不正確 |
_DOMAIN |
記錄檔和log10已使用資料流 SIMD 延伸模組 2 (SSE2) 的實作。 請參閱 _set_SSE2_enable 的資訊,並使用 SSE2 實作的限制。
備註
C + + 允許多載化,因此您可以呼叫多載的記錄檔和log10。 在某 c 程式, 記錄檔和log10一直使用,並傳回 double。
需求
常式 |
所需的標頭 |
---|---|
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
若要產生其他的基底的對數,請使用數學的關聯性: 記錄的底數 b = = (a) 自然記錄檔 / 自然記錄 (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