如果我有
(float)value = 10.50
做
int new_value = (int)value
有什么规则会四舍五入?
当浮点类型的有限值转换为整数类型时,小数部分被丢弃(即,该值被截断为零)。
所以在 的情况下-10.5
,它被转换为-10
。
C++11 4.9 浮点整数转换 [conv.fpint]
浮点类型的右值可以转换为整数类型的右值。转换截断;也就是说,小数部分被丢弃。如果截断的值不能在目标类型中表示,则行为未定义。[ 注意:如果目标类型是布尔型,请参见 4.12。——尾注]
规则很简单:数字只是被截断为其整数部分,在本例中为10
。小数部分被完全丢弃。这同样适用于负数:-10.5
将转换为-10
.
当转换为整数时,浮点数的小数部分被丢弃,这意味着浮点数 10.5 将被转换为整数 10,而浮点数 -10.5 将被转换为整数 -10。