pow函数使用时候的误差问题 | 您所在的位置:网站首页 › pow代码 › pow函数使用时候的误差问题 |
pow函数的使用
很多人有疑问了 pow函数怎么了,多好用啊。 只需一个头文件,就可以随便求指数级数字了。 #include //或#include以上头文件分别是c++格式(左),c格式(右) 本质上没有什么区别,不过貌似c++习惯用左边的(忽略忽略) 求平方根: pow(double ,0.5);求立方: pow(double ,3);求n次方: pow(double ,n);多方便啊。 但是,小编我在用pow返回整型的时候头大了![]() 上面是1到10的平方,什么鬼?为啥有24,99!?!?!? 这个问题曾困扰到我不行。经过多番打听和代码鏖战。我终于找到了为何–(误差!): 1. pow的函数原型:double pow(double ,double); 函数本身是一个返回double类型的函数 2. pow的计算方式,存在误差,就是说pow(5,2);这条代码,实际上是25,但是由于算法问题(也可能是设备处理器问题,我太laji,不知道。)很可能返回的值是24.9999,然后转化为整型,变成了24。导致输出整型的时候变成了24 我说了这么多,那么怎么解决这个问题呢。只需要加上一个常变量就好了。一般放在主函数外面, const int eps = 1e-6;加上了这个比较小的常变量之后,24.9999就会超过(一点点)或等于25,转化成整型之后就是25了 还有一种方法,就是老老实实用double存返回的值。 或者还有更好的方法。请多多指教吧。 *太难了 * |
CopyRight 2018-2019 实验室设备网 版权所有 |