总所周知,我们在高中学过对数函数,记作y=logax。下面是百度百科关于对数函数的描述:
而在C++/C语言中,也有对数函数,只不过表示方式略有不同。
在C++/C语言中,对数函数y = lnx的表示方法为y = log(x),函数的完整原型为:double log(double x);
例如:
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
printf("%f\n",log());
return ;
}
输出:
在C++/C语言中,对数函数y = lgx(以10为底的对数函数)的表示方法为y = log10(x),函数的完整原型为:double log10(double x);
例如:
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
printf("%f\n",log10());
return ;
}
输出:
因此我们在实际应用中可以直接调用这两个函数,但要记住在C/C++语言中表示的不同形式,而且在使用时需要加上头文件#include<cmath>
否则在题目提交时会报错(PE)
那么又会有问题,我们要怎么样求常规对数,即logab(以a为底,b为真数)的值呢?
这个其实也很简单,一个换底公式就解决了
公式描述:
公式中a,c均大于零且不等于1。
因此我们可以将其转换成两个以自然对数为底或者是以10为底的数的商
例如:我们要求解log(2)8的值,则有:
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
printf("%f\n",log()/log());
return ;
}
输出:
原文:http://blog.csdn.net/liujian20150808/article/details/50628061