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

anank 2007-05-14 01:20:13
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)不可以?
...全文
3757 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yoyo_alex_lw 2007-05-14
  • 打赏
  • 举报
回复
因为计算机在表示浮点数时,比如2.55,实际上有时是2.551xxx,2.549xxx,等,浮点数表示有精度问题.因此,比较时,一般需要指定精度.
yuyunliuhen 2007-05-14
  • 打赏
  • 举报
回复
if ( b > a )可以,会发生int 向float 的转换
taodm 2007-05-14
  • 打赏
  • 举报
回复
精度问题。浮点数是a-b的绝对值在一个很小的接近0的区间内,也就相当于a==b了
所以,if (a > b)往往不是你想要的。应该是if (a - b > 0.00001)
yulefox 2007-05-14
  • 打赏
  • 举报
回复
xlbdan(流浪剑客)的是正解。

float显然可以直接比较。
xlbdan 2007-05-14
  • 打赏
  • 举报
回复 2
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了
expter 2007-05-14
  • 打赏
  • 举报
回复
去看高质量编程

65,176

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧