2016-11-30 27 views
-2

請問,有人可以幫助我計算C中簡單的log2嗎?我試着用這個代碼,但它不工作:C語言對數底數2

printf("log(%f) = %f\n", x, log2(x)); 
+2

解釋* 「不工作」 * [如何寫日誌基座(2)在C/C++](HTTP的 – user3386109

+2

可能重複:// stackoverflow.com/questions/3064926/how-to-write-log-base2-in-cc) – chus

回答

1

您還可以創建它轉換到任何你想要的日誌基地一個輔助功能:

類似這樣的:

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

double 
my_log(double x, int base) { 
    return log(x)/log(base); 
} 

int 
main(void) { 
    double x = 42.0; 

    printf("log(%f) = %f\n", x, my_log(x, 2)); 

    return 0; 
} 

編譯時:

gcc -Wall -o logprog logprog.c -lm 

輸出:

log(42.000000) = 5.392317 
3
#include <stdio.h> 
#include <math.h> 

int main() { 
    double x = 42.0; 

    printf("log(%f) = %f\n", x, log2(x)); 

    return 0; 
} 

輸出

% ./a.out 
log(42.000000) = 5.392317 
% 
+0

那麼,爲什麼OP的代碼不工作? –

+1

@Rightleg可能缺少''這意味着返回值不正確地默認爲'int'。 –

+1

他也可能需要用'-lm'進行編譯,具體取決於他使用的是哪個版本的'gcc'。 – RoadRunner