常用数学库函数

对于c++对数函数的记录:
C++函数__lg()和log2()都是用于计算以2为底的对数的函数,但它们有些地方是不同的。__lg()函数是一个非标准的函数,只在部分编译器中支持,它返回一个整数值,表示输入参数的二进制表示中最高位1的位置(从0开始计数)。例如,__lg(8)将返回3,因为8的二进制表示是1000,最高位1在第3位。log2()函数是C++11标准中提供的函数,它返回一个浮点数值,表示以2为底的对数。例如,log2(8)将返回3.0,因为8等于2的3次方。它们的返回值类型不同,前者返回整数,后者返回浮点数。另外,__lg()是非标准函数,只在部分编译器中支持,而log2()是C++11标准库中的函数,在大部分编译器中都可以使用

作者:糖心伯虎
链接:https://www.zhihu.com/question/446219057/answer/2993917211
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
log函数包括两种函数 一种以e为低的log()函数

另一种为以10为底的log 10()函数;

#include<iostream> #include<cmath> using namespace std; int main() { double a=9,b=10; cout<<log(a)<<endl; cout<<log(exp(a))<<endl; cout<<log10(b)<<endl; return 0; }

如果只是要整数不是要精准对数值,可以自己预处理加快速度

下面给出线性递推对数值下取整的代码:

for(int i = 1;i<=n;++i) lg[i] = lg[i>>1] + 1;

**************

pow函数

double pow(double x,double y);
pow()返回类型是double, 循环计数i与 pow()比较的时候将被转换为两个double比较,于是就出现了边界问题。
pow的计算方式,存在误差,就是说pow(5,2);这条代码,实际上是25,但是由于算法问题很可能返回的值是24.9999,然后转化为整型,变成了24。


__EOF__

本文作者爱飞鱼
本文链接https://www.cnblogs.com/mathiter/p/17815441.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   potential-star  阅读(469)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示