这是我的代码。
#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?
答案 0 :(得分:7)
使用高中数学:
log_y(x) = ln(x)/ln(y)
但我同意,那里没有这样的实用功能有点奇怪。这可能是由于这些函数几乎直接映射到FPU ..
但是不要担心使用这种“扩展”方式。数学不会改变。该公式至少在接下来的几个生命周期内有效。
答案 1 :(得分:6)
例如,对于基数2中的log 3
log (3) / log(2)
会这样做。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout << log(3.0) / log(2.0) << endl;
}
答案 2 :(得分: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;
}
答案 3 :(得分:3)
这应该是用于查找具有任何给定数字的基数
的日志的一般函数double log_base_n(double y, double base){
return log(y)/log(base);
}
这样:
cout<<log_base_n(3.0,2.0);
应该这样做。
答案 4 :(得分:1)
使用log(3.0)/log(2.0)
。 {0}中未包含log2
。
double log_2( double n )
{
return log(n) / log(2);
}