double 转换int 要四舍五入的 c语言

如何才能不四舍五入 , 有人说用(int)(x < 0 ? x - 0.5 : x + 0.5)这个
有点不明白 请解释一下

一个double型的数强制转换后 就把小数点后去了 这个相当于if(x<0) x=x-0.5;else x=x+0.5;
如果是负数的话-0.9强制转换为 -0.0 所以要减0.5 整数的话 0.9 也是强制转换为0 但是如果加0.5 就能强制转化为1了 不知楼主明白没有
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-07
如果x>0的话,即正数。
x+0.5,如果x小数部分超过或等于0.5的话,这一加,势必会往整数上进位。
如果小于0.5,加完没有进位。
(int)强制转换是只取整数部分的。

同样x<0的情况也可以由x-0.5来取。