c++中 ,当判断一个整数大于或小于一个小数(如average)时,能不能直接比?

如果不能,比如那个小数是average,那为什么要如下做呢:判断大于:比较标准是:> int roundaverage=(int)(average+0.5); 判断小于时,判断标准是< int truncatedaverage=(int) (average). ?

可以比,c++会自己转换类型的,如果整型与浮点数比较,整数会转换成浮点数再比较的。
c++中如果你要转型一般用static_cast<type-id>(expression)的,type-id在你意思下是double,expression是你要转换的表达式追问

en 谢谢了~ 那么我在一个算法中看到有 :判断大于:比较标准是:> int roundaverage=(int)(average+0.5); 判断小于时,判断标准是< int truncatedaverage=(int) (average). 它这样+0.5 起到什么效果呢? 辛苦了

追答

原因是浮点数转整型是取地板数(floor),即只取整数部分。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-12
最好是 做一个类型转换
int i = 10;
double j = 9.6;
if(i == ( (int) (j+0.5) ) )
{
...
}追问

谢谢了! 但它为什么要加0.5再取整呢 ,直接取整不行么?~

追答

加0.5表示四舍五入,(int)(j)否则小数部分全部舍弃。

第2个回答  2011-08-12
en
第3个回答  2011-08-12
直接比, 随便比
相似回答