#include <stdio.h>
int main()
{
double  x,y;
scanf("%f",&x);

y=(x>90);
printf("%f\n",y);
return 0;
}
98
0.000000
Press any key to continue
却是这样的结果请问是怎么回事啊?
98>90 y应该是1啊!

解决方案 »

  1.   

    double的比较不能直接用 '<'、'>'、'=='等这些去判断。例如:if   (float1   >   float2) //   不推荐的写法 例如:if   (float1-float2   >   0)     //   正确的写法 这里可以把x和90的差与常量const float EPSINON = 0.00001;进行比较
    if (((x-90) >= - EPSINON) && ((x-90) <= EPSINON)
    {
    ...
    }
      

  2.   

    scanf("%lf",&x); 
    printf("%lf\n",y); 
     
      

  3.   

    发表于:2008-12-05 18:18:302楼 得分:0 
    double的比较不能直接用 ' <'、'>'、'=='等这些去判断。 例如:if  (float1  >  float2) //  不推荐的写法 例如:if  (float1-float2  >  0)    //  正确的写法 这里可以把x和90的差与常量const float EPSINON = 0.00001;进行比较 
    if (((x-90) >= - EPSINON) && ((x-90) <= EPSINON) 

    ... 

    例如:if  (float1-float2  >  0)    //  正确的写法 这样写也不合理吧?浮点数不能直接和0比较..........嗷喔........
      

  4.   

    scanf("%lf",&x); 
    printf("%lf\n",y); 
    即可
      

  5.   


    正解!
    浮点型和int型直接比较很危险~
      

  6.   


    应该是不能用"==",">""<"还是可以的
    如果比较是否相等的时候用你说的常量差来判断
      

  7.   

    不知道有什么危险lz的根本原因不在这里
    而在于lz定义的变量是double,而输入格式却是float,所以数据只取32位,肯定会有问题的