Chinaunix首页 | 论坛 | 博客
  • 博客访问: 256438
  • 博文数量: 71
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 920
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-16 13:07
个人简介

我喜欢蓝天,也喜欢雨天。

文章分类

全部博文(71)

文章存档

2014年(14)

2013年(57)

分类: Windows平台

2014-01-21 16:44:44

如果程序中要求比较两个float值是否相等,你会怎样写呢?

float a;

float b;

if(a == b)

{

...

}

这样写对吗?

其实这样写不对,为什么呢?原因是float型在计算机中存储中只能取近似值,有精度的限制。那么正确的做法是什么呢?

定义一个允许的最小误差,比如:

#define  Espinon  0.000001

那么比较a和b是否相等:

if(fabs(a-b)

另外补充说明,向float和double型的数据一般不用 ==和!=符号,一般使用>,>=,<,<=

那么比较一个float型是否为零就要这样写:if(a <= Espinon && a >= Espinon ).

阅读(2996) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~