如果我有
(float)value = 10.50
并做
int new_value = (int)value
轮数会有什么规则?
答案 0 :(得分:8)
当浮动类型的有限值转换为整数类型时,小数部分被丢弃(即,截断为零)。
因此,在-10.5
的情况下,它已转换为-10
。
C ++ 11 4.9浮动积分转换[conv.fpint]
浮点类型的右值可以转换为整数类型的右值。转换截断;也就是说,丢弃小数部分。如果截断的值无法在目标类型中表示,则行为未定义。 [注意:如果目的地类型是bool,请参阅4.12。 - 后注]
答案 1 :(得分:3)
规则很简单:数字只会被截断为其整数部分,在本例中为10
。小数部分完全掉线。这同样适用于否定数字:-10.5
将转换为-10
。
答案 2 :(得分:1)
当转换为整数时,float的小数部分被删除,这意味着float 10.5将被转换为整数10,而float -10.5将被转换为整数-10。