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
要找出其對數的值。
傳回值
log 函式傳回自然對數 (基底 x e),如果成功。 log10 函式傳回以 10 為基底之對數。 如果 x 為負數,這些函式會傳回不確定,預設為。 如果 x 為 0,則會傳回 INF (無限)。
輸入 |
SEH 例外狀況 |
Matherr 例外狀況 |
---|---|---|
± QNAN,IND |
無 |
_DOMAIN |
± 0 |
ZERODIVIDE |
_SING |
x < 0 |
INVALID |
_DOMAIN |
log 與 log10 會使用 Streaming SIMD Extensions 2(SSE2) 的實作。 請參閱 _set_SSE2_enable 以取得詳細資訊及使用限制 SSE2 實作。
備註
C++ 允許多載,因此您可以呼叫 log和 log10 的多載。 在 C 程式,log 和 log10 一律接受並傳回 。
需求
常式 |
必要的標頭 |
---|---|
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
若要產生其他基底對數,請使用數學關聯性 (式):記錄 == 自然對數 (a)/自然對數 (B) 的基礎 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