pow函数使用时候的误差问题 您所在的位置:网站首页 pow代码 pow函数使用时候的误差问题

pow函数使用时候的误差问题

2024-06-26 02:10| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有