4

如果我有

(float)value = 10.50

int new_value = (int)value

有什么规则会四舍五入?

4

3 回答 3

8

当浮点类型的有限值转换为整数类型时,小数部分被丢弃(即,该值被截断为零)。

所以在 的情况下-10.5,它被转换为-10

C++11 4.9 浮点整数转换 [conv.fpint]

浮点类型的右值可以转换为整数类型的右值。转换截断;也就是说,小数部分被丢弃。如果截断的值不能在目标类型中表示,则行为未定义。[ 注意:如果目标类型是布尔型,请参见 4.12。——尾注]

于 2013-09-29T14:55:41.513 回答
3

规则很简单:数字只是被截断为其整数部分,在本例中为10。小数部分被完全丢弃。这同样适用于负数:-10.5将转换为-10.

于 2013-09-29T14:40:19.740 回答
1

当转换为整数时,浮点数的小数部分被丢弃,这意味着浮点数 10.5 将被转换为整数 10,而浮点数 -10.5 将被转换为整数 -10。

于 2013-09-29T14:42:07.307 回答