浮点数与”零值”
精度损失:
浮点值与实际值不等,可能偏大可能偏小,都属于精度损失
- 验证浮点数是否存在精度损失
验证浮点数的差值是否存在精度损失
浮点数直接比较验证
结论: 浮点数在进行比较时,绝对不能使用双等号==
来进行比较. 浮点数本身有精度损失,进而导致结果可能有细微的差别.
如何进行浮点数比较
1. x - y == 0的条件是 |x - y| -精度 && x - y , double fabs(double x); 返回x的绝对值.
即 fabs(x-y)
//--------------------------------------------------------------
//方法1,自定义精度
#include
#include
#define EPSILON 0.0000000000000001 //自定义精度
int main()
{
double x = 1.0;
double y = 0.1;
//验证x - 0.9 是否等于 0.1
if(fabs((x-0.9)- y)
//方法2:使用C语言提供的精度
#include
#include
#include
int main()
{
double x = 1.0;
double y = 0.1;
//验证x - 0.9 是否等于 0.1
// 内置最小精度值 DBL_EPSILON 和 FLT_EPSILON ,1.0+DBL_EPSILON != 1.0 ,EPSILON是改变1.0的最小的值,数学概念,略
if(fabs((x-0.9)- y)
浮点数与”零值”比较
只需要判定它是否小于EPSILON即可
int main()
{
double x = 0.0;
// double x = 0.00000000000000000000000000001; //很小也可以认为等于0
if(fabs(x)
千百度
© 版权声明
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
THE END
暂无评论内容