C++ ceil 和负零

Tho*_*eod 5 c++ floating-point visual-studio-2008 ceil

在 VC++ 2008 上,ceil(-0.5)正在返回-0.0. 这是通常/预期的行为吗?避免-0.0将 a打印到 i/o 流的最佳做法是什么。

Ste*_*non 3

ceilC++中的内容来自C标准库。

C 标准规定,如果平台实现 IEEE-754 算术,则ceil( )其行为就像根据 IEEE-754 roundTowardPositive舍入属性将其参数舍入为整数一样。IEEE-754 标准规定(第 6.3 条):

转换、量化操作、roundToIntegral 操作和 roundToIntegralExact 结果的符号是第一个或唯一操作数的符号。

因此结果的符号应始终与输入的符号匹配。对于范围内的输入(-1,0),这意味着结果应该是-0.0