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

例如以 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 回答
7

使用高中数学:

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

但我同意,这有点奇怪,那里没有这样的实用功能。这可能是由于这些功能几乎直接映射到 FPU..

但是不要担心使用这种“扩展”的方式。数学不会改变。该公式将至少在接下来的几个生命周期内有效。

于 2013-02-14T10:00:38.600 回答
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). log2不包含在 C90 中。

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