首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

int类型 和 double 类型比较的有关问题

2012-02-07 
int类型 和 double 类型比较的问题int类型可以和double类型直接比较吗?-------------------记得老早就看过

int类型 和 double 类型比较的问题
int类型   可以   和   double   类型直接比较吗?
-------------------

记得老早就看过:不要直接对两个实数进行比较

例如:if   (float1   >   float2)//   不推荐的写法

以前上课时,问过老师,老师说:

不可以直接对两个实数做比较,但可以把它们的差和0作比较

例如:if   (float1-float2   >   0)     //   正确的写法

今天写程序时,想这样做比较,不知道这种写法符合要求吗?

int   a   =   2   ;

double   b   =   2.3   ;

if   (   b   >   a   )
      cout   < <   "something "   ;

问题1:上面的这种写法对吗?

------------
问题2:另外,自己的计算机组成原理学的不好,两个整型数之间的比较我还懂得,但是不懂得两个浮点数怎么比较的,大家给讲一下

为什么   if   (float1-float2   >   0)   就可以?但是   if   (float1   >   float2)不可以?

[解决办法]
去看高质量编程
[解决办法]
1.if ( b > a )应该是可以的,比较的时候会自动向上转换,把int转换成float再进行比较

2.if (float1 > float2)也是可以的


我觉得楼主可能是记错了,float不推荐的比较是比较相等时的情况,就像
float a,b;
if(a==b)

这种是不能直接来比较的,而要换成
if((a-b) <0.0001 && (a-b)> -0.0001)

也就是说,a-b的绝对值在一个很小的接近0的区间内,也就相当于a==b了
[解决办法]
xlbdan(流浪剑客)的是正解。

float显然可以直接比较。
[解决办法]
精度问题。浮点数是a-b的绝对值在一个很小的接近0的区间内,也就相当于a==b了
所以,if (a > b)往往不是你想要的。应该是if (a - b > 0.00001)
[解决办法]
if ( b > a )可以,会发生int 向float 的转换

[解决办法]
因为计算机在表示浮点数时,比如2.55,实际上有时是2.551xxx,2.549xxx,等,浮点数表示有精度问题.因此,比较时,一般需要指定精度.

热点排行