4

これが私のコードです。

#include <iostream>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include <cmath>
#include <functional>
using namespace std;
void main()
{
    cout<<log2(3.0)<<endl;

}

しかし、上記のコードではエラーが発生します。エラー コードは次のとおりです: エラー C3861: 'log2': 識別子が見つかりません。c++を使用してlog2を計算するにはどうすればよいですか?

4

5 に答える 5

7

高校数学の使用:

log_y(x) = ln(x)/ln(y)

しかし、私は同意します。そのようなユーティリティ関数が存在しないというのは少し奇妙です。これはおそらく、これらの関数が FPU にほぼ直接マッピングされているためです。

ただし、この「拡張された」方法を使用することについて心配する必要はありません。数学は変わりません。この式は、少なくとも次の数回の寿命で有効になります。

于 2013-02-14T10:00:38.600 に答える
7

たとえば、基数 2 の log 3 の場合

log (3) / log(2)

やります。

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    cout << log(3.0) / log(2.0) << endl;

}
于 2013-02-14T10:00:13.697 に答える
4

次のコードは gcc コンパイラで動作します

#include <iostream>
#include<stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cmath> 
#include <functional>
using namespace std;
main()
{
    cout<<log2(3.0)<<endl;

}
于 2013-02-14T10:52:44.847 に答える
3

これは、任意の数のベースを持つログを検索するための一般的な関数である必要があります

double log_base_n(double y, double base){
return log(y)/log(base);
}

それで:

cout<<log_base_n(3.0,2.0);

トリックを行う必要があります。

于 2013-02-14T10:14:51.677 に答える
2

使用してlog(3.0)/log(2.0)ください。log2C90には含まれていません。

double log_2( double n )  
{  
    return log(n) / log(2);  
}
于 2013-02-14T09:59:50.407 に答える