回 帖 发 新 帖 刷新版面

主题:if语句判断

我的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个回复)

沙发

1、SIZE值可对?

板凳

SIZE 的值是对的,没有错,就是这个数组来进行判断,如果与一个数相等,则输出,如果不等继续循环,但是好像就没有相等的

3 楼

但是这个need_rc的数据中有等于0.9的
--- 一定没有,估计你是用肉眼看的
比如 0.90000000000000001 显示为 0.9,但它其实并不是 0.9

4 楼

是的,问题查出来了,need_rc[i]里面的数据读出来后没有0.9.都是0.8999999之类的,检查下数据格式吧

5 楼


你好 那如果我要调整数值,应该怎么调整呢?就好比那个0.900000000001,怎样才能把他转为0.90?

6 楼

double一般不判断==
一般定义一个极小比如-1e8,然后判断double和目标量差值的绝对值是否不大于这个极小值

7 楼

我觉得如果need_rc[i]有等于0.9的是可以判断的

至于你说把0.900000000001,怎样才能转为0.90?  你可以判断的时候写
 if(need_rc[i]-0.9 <= 0.0000000001)

我来回复

您尚未登录,请登录后再回复。点此登录或注册