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