读书人

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

发布时间: 2012-02-07 17:45:36 作者: rapoo

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,等,浮点数表示有精度问题.因此,比较时,一般需要指定精度.

读书人网 >C++

热点推荐