Float在将其转换为整数时如何舍入

时间:2013-09-29 14:39:41

标签: c++ floating-point integer

如果我有

(float)value = 10.50

并做

int new_value = (int)value

轮数会有什么规则?

3 个答案:

答案 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。