c语言中ln,lg,log的表示。
程序员文章站
2024-02-27 17:20:33
...
c标准math.h中有两个与log有关的函数。
double __cdecl log(double _X);
double __cdecl log10(double _X);
其中log相当于数学中的ln。
而log10相当于数学中的lg。
loge和log10可以直接表示了。
如下:
(ps:第三行是c语言中取e值的方法,是笔者想出来的哦。。不用循环很多次逼近,可以直接得到很精确的e值了。至于为什用2,用其它数也是可以的,但是笔者试了好多次,发现用2取得的值比较精确。
ps:用定义算应该是不行的,c语言里没有直接表示无穷的方法。)
#include <math.h>
#include <stdio.h>
const double e = pow(2.0,1.0/log(2.0));//可以用这个方法获得比较精确的e值。
int main()
{
printf("%.6lf\n", log10(10.0));
printf("%.6lf\n", log(e));
return 0;
}
输出:
1.000000
1.000000
如果想求logab的对数,可以用换底公式。
把logab换成以10或e为底的对数就好了。
例如:求log28
log28=lg8/lg2
#include <stdio.h>
#include <math.h>
int main()
{
printf("%.6lf\n", log10(8.0)/log10(2.0));
return 0;
}
输出:
3.000000
推荐阅读