double的处理和一个不常用的头文件
来源:互联网 发布:前端常用的软件 编辑:程序博客网 时间:2024/04/30 11:00
double类型数值不能直接比较相等情况,因为double中没有严格的相等概念,因此在比较的时候通常要伙同一个EPS(要求的精度)来比较,需要注意的是,比较时是比较上/下届的
充分理解下面两组式子就好了:
a < b==>a < b - EPS
a <= b==>a < b + EPS
C标准库中还有一个神奇的头文件,float.h,我们并不经常使用它,但是它的作用其实和limits.h类似,都是关于浮点型的各种常量,可以极大的简化我们的工作(同样也有助于移植我们的程序)
下面显示了一个通用的比较函数和所有的double的常量(double的比较常用,其余两个都类似,一个是FLT,一个是LDBL)
其实我对于这个比较函数不是很满意,因为DBL_EPSILON非常之小(在我的机子上大概是2e-16),可能远远超过了我们需要的精度,从而导致过多的计算次数,直接后果是TLE,同样也可能带来错误的答案..
注意,这里即使DBL_MAX+DBL_MAX也不会产生错误,因为会得到1.#INF的数值,而这个数值表示无限大,DBL_MAX<1.#INF(不像INT_MAX,一旦溢出直接变成负数了..可恶..)
个人建议是仍然自己定义EPS,在充分分析题意的基础上.
还要提到一点:目前我做过的关于double的题目,仅有数道要求这样比较大小,大部分都是直接比较就可以的,甚至连相等都可以比较..额..很神奇..如果那样总是WA,要想到先试试dCmp再说..
一些细节:浮点数输出有三种形式(默认形式输出的是float)
%e/E==>输出科学计数法下的表达
%f==>输出十进制小数的表达
%g/G==>会自动判断e/f哪个比较小,就输出哪个
%lx==>x可以是e/E/f/g/G,输出的类型是double类型
%.nlx==>x同上,n是数字,表示小数点后保留的位数(注意这个数值是已经经过舍入的值,默认是六位)
- double的处理和一个不常用的头文件
- 常用的头文件和函数
- 头文件的处理
- 日常处理double数据常用的方法
- ACM常用的头文件
- OpenCV常用的头文件
- ffmpeg常用的头文件
- OpenCV常用的头文件
- VC常用数据类型和MFC类对应的头文件
- VC常用数据类型和MFC类对应的头文件
- Cocos2dx常用的一些宏定义和头文件
- linux c之c语言符合标准的头文件和linux常用头文件
- 常用文件的文件头(十六进制)
- 一个包含所有c++的头文件的头文件
- VMware6.5安装Fedora14 安装 VMware Tools 头文件不匹配的处理过程
- Double和double的区别
- double和Double的区别
- 动态库的头文件和 .lib 文件不匹配引发的问题
- CSDN java3群技术交流群开群了
- Mytesxt
- JVM运行原理
- Delphi获取硬盘ID
- ibatis 第一步
- double的处理和一个不常用的头文件
- 深入剖析JVM工作原理和特点
- 我要专业之设计文档
- UML建模能力成为对日软件外包首要条件
- GNU编译器:gcc中的预编译宏
- 博客优化、收录、RSS技巧
- Hibernate延迟加载机制
- webservice中的soap和rest方式比较
- 递归读取相应路径下的所有文件