主题:if语句判断
namemy
[专家分:0] 发布于 2010-04-20 11:32:00
我的if语句有一句不能实现,郁闷中,麻烦牛人来解决一下。
for(i = 0;i < SIZE; i++)
{
if(need_rc[i] == 0.9)
{
printf("need_rc%f ",need_rc[i]);
}
}
need_rc我定义的是double型,但是发现如果是大于0.9就会出结果,但是一旦说判断相等的话 就不会有结果,但是这个need_rc的数据中有等于0.9的,希望有人可以解释下为什么
回复列表 (共7个回复)
沙发
liudan319 [专家分:3780] 发布于 2010-04-20 13:42:00
1、SIZE值可对?
板凳
namemy [专家分:0] 发布于 2010-04-20 14:28:00
SIZE 的值是对的,没有错,就是这个数组来进行判断,如果与一个数相等,则输出,如果不等继续循环,但是好像就没有相等的
3 楼
bruceteen [专家分:42660] 发布于 2010-04-20 14:31:00
但是这个need_rc的数据中有等于0.9的
--- 一定没有,估计你是用肉眼看的
比如 0.90000000000000001 显示为 0.9,但它其实并不是 0.9
4 楼
liudan319 [专家分:3780] 发布于 2010-04-20 14:58:00
是的,问题查出来了,need_rc[i]里面的数据读出来后没有0.9.都是0.8999999之类的,检查下数据格式吧
5 楼
namemy [专家分:0] 发布于 2010-04-20 16:32:00
你好 那如果我要调整数值,应该怎么调整呢?就好比那个0.900000000001,怎样才能把他转为0.90?
6 楼
雪光风剑 [专家分:27190] 发布于 2010-04-20 19:31:00
double一般不判断==
一般定义一个极小比如-1e8,然后判断double和目标量差值的绝对值是否不大于这个极小值
7 楼
晓予天信 [专家分:20] 发布于 2010-04-20 21:06:00
我觉得如果need_rc[i]有等于0.9的是可以判断的
至于你说把0.900000000001,怎样才能转为0.90? 你可以判断的时候写
if(need_rc[i]-0.9 <= 0.0000000001)
我来回复