C语言的浮点数到整数的转换会去掉小数部分,因此在取整之前加上0.5会时大于等于0.5的小数部分进位。
int ( x <0 ? x-0.5:x+0.5)
注意:因为取整的默认方式是截断,因此通常在将浮点数转换为整数的时候最好都使用显式的取整步骤。一不小心,就有可能将你认为的8.0转换成了7,因为它的内部表示可能是7.999999.
本文介绍了一种C语言中浮点数转换为整数的方法:通过加0.5后再取整来实现四舍五入效果,避免了默认截断方式导致的数据丢失问题。同时提醒开发者注意浮点数内部表示可能导致的精度误差。
C语言的浮点数到整数的转换会去掉小数部分,因此在取整之前加上0.5会时大于等于0.5的小数部分进位。
int ( x <0 ? x-0.5:x+0.5)
注意:因为取整的默认方式是截断,因此通常在将浮点数转换为整数的时候最好都使用显式的取整步骤。一不小心,就有可能将你认为的8.0转换成了7,因为它的内部表示可能是7.999999.
8036

被折叠的 条评论
为什么被折叠?