prev up next   top/contents search

comp.lang.c FAQ 列表· 第14.6题

我该如何四舍五入数字?


最简单直接的方法是使用类似这样的代码:

(int)(x + 0.5)
C 语言的浮点数到整数转换会截断(丢弃)小数部分,所以在截断之前加 0.5 可以实现大于等于 0.5 的小数向上舍入。(不过,此方法对负数不起作用,对于负数,您可以使用类似(int)(x < 0 ? x - 0.5 : x + 0.5)这样的代码,或者使用floorceil函数。)

您可以通过缩放来精确到特定的小数位数。

	(int)(x / precision + 0.5) * precision
处理负数或实现偶数/奇数舍入会稍微复杂一些。

请注意,由于截断是默认行为,因此在将浮点数转换为整数时,通常最好使用显式的四舍五入步骤。除非您足够小心,否则您认为等于 8.0 的数字,在内部可能表示为 7.999999,从而被截断为 7。

其他链接: 深入阅读


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管