首页 / C语言 / C语言学习———pow的使用
C语言学习———pow的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C语言学习———pow的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1382字,纯文字阅读大概需要2分钟。
内容图文
在使用在整型计算中,如果次方数过大,使用 pow 会出现一些问题。
比如这两个代码,本质上计算是相同,并没有什么区别。
#include <stdio.h>
#include <math.h>
int main()
{
long long s=0,a;
for (int i=1;i<=60;i++){
s+=pow(2,i-1);
}
printf("%lld",s);
return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
long long s=0,a;
for (int i=1;i<=60;i++){
a=pow(2,i-1);
s+=a;
}
printf("%lld",s);
return 0;
}
运行结果如下(不怎么会调图片大小,就放原截图了)
发现运行结果差1
调试中
在循环当中插入
printf("%d %lld\n",i,s);
发现是进行第54次循环时出现了问题
和同学讨论,发现了原因出在哪里,并解决了这个问题
C语言 pow 的原函数是 double pow,计算的结果返回的是 double,也就是双精度。
所以我们要自我设定一个关于 long long 类型的 pow 函数。
long long longpow(int x,int y)
{
int i;
long long p=1;
for (i=1;i<=y;i++){
p*=x;
}
return(p);
}
运行的前面两种方式(附代码和运行结果)
#include <stdio.h>
#include <math.h>
int main()
{
long long longpow(int x,int y);
long long s=0,a=0;
for (int i=1;i<=60;i++){
s+=longpow(2,i-1);
}
printf("%lld",s);
return 0;
}
long long longpow(int x,int y)
{
int i;
long long p=1;
for (i=1;i<=y;i++){
p*=x;
}
return(p);
}
#include <stdio.h>
#include <math.h>
int main()
{
long long longpow(int x,int y);
long long s=0,a=0;
for (int i=1;i<=60;i++){
a=longpow(2,i-1);
s+=a;
}
printf("%lld",s);
return 0;
}
long long longpow(int x,int y)
{
int i;
long long p=1;
for (i=1;i<=y;i++){
p*=x;
}
return(p);
}
这是写博客的第三次,不好请多多担待
内容总结
以上是互联网集市为您收集整理的C语言学习———pow的使用全部内容,希望文章能够帮你解决C语言学习———pow的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。