关于pow函数的准确性
来源:互联网 发布:cf手游刷枪软件2016 编辑:程序博客网 时间:2024/05/17 03:50
对以下代码,分别在DEVC++ 5.4.0、VC6.0、VS2012上执行
代码如下:
#include<iostream>#include<math.h>using namespace std;int main(){int arr[] = {1,2,3,4,5};int n=0;for(int i=0;i<=2;i++)n += arr[i]*(int)pow(10,2-i);cout<<n<<endl;return 0;}
其运行结果分别为:122、123、123
我们都知道 (int)99.99999 的结果是99,取其整数部分
对于幂函数pow,是用数值逼近的方法给出的,并不保证严格精确,执行效率也不高,在不同平台精确度可能有一定的差异,
所以也就会导致结果不是我们预期想要的。
-------------------------------------------------------------------------------------------------
对以上问题,我是这样处理的:
方案1:将语句 n += arr[i]*(int)pow(10,2-i);
改为:n += arr[i]*(int)(pow(10,2-i)+0.5);//其实质是进行四舍五入,然后再取整数部分,
因为该函数有一定的准确性,误差不可能太大。
最后应该注意:如果按照四舍五入的方法来处理,最后必须对结果进行强制类型转换,不然当结果乘上一个比较大的数时,在通常情况下结果必定会出错!
方案二:(参考网友们的做法)
将语句改为:n += n*10 + arr[i];
这样就会得出同样的结果,不会出现错误!
0 0
- 关于pow函数的准确性
- 关于pow(doublex,doubley)函数的误用
- 关于c++pow()函数
- 关于pow函数。
- pow函数的用法
- pow函数的用法
- php的pow函数
- pow()函数的应用
- pow函数的用法
- C语言中关于pow()函数的问题
- 关于wmi获取cpuid、硬盘id的准确性
- Math.pow函数的重写
- pow函数的性能测试
- 神奇的pow()函数
- 冒泡算法的准确性
- 保持精度的准确性。
- pow函数
- pow ()函数
- 搜索引擎使用方法
- 马来西亚:失联飞机的应答系统很可能被人为关闭
- 时间类--规定好增加的时间
- OpenFOAM——primitive类
- UITextField格式化电话号码和银行卡
- 关于pow函数的准确性
- 【EZ】博客正式开通
- netfilter各种队列的区别
- 制作android的.9.png图片 (转)
- PLSQL的快捷键设置以及使用技巧
- 分析资源管理系统的演变: 从Mesos,YARN再到Google Omega
- 专业订制|软件开发|系统开发|网页设计|做网站|企业建站|网站建设
- 在myeclipse中通过jdbc访问mysql出现拒绝访问的解决办法
- ubuntu拨号上网连接不上到问题