问我该如何四舍五入数字?
答最简单直接的方法是使用类似这样的代码:
(int)(x + 0.5)C 语言的浮点数到整数转换会截断(丢弃)小数部分,所以在截断之前加 0.5 可以实现大于等于 0.5 的小数向上舍入。(不过,此方法对负数不起作用,对于负数,您可以使用类似(int)(x < 0 ? x - 0.5 : x + 0.5)这样的代码,或者使用floor和ceil函数。)
您可以通过缩放来精确到特定的小数位数。
(int)(x / precision + 0.5) * precision处理负数或实现偶数/奇数舍入会稍微复杂一些。
请注意,由于截断是默认行为,因此在将浮点数转换为整数时,通常最好使用显式的四舍五入步骤。除非您足够小心,否则您认为等于 8.0 的数字,在内部可能表示为 7.999999,从而被截断为 7。
其他链接: 深入阅读