关于float到int

时间:2014-09-28 04:44:53

标签: c++

float x = 2.5;
int i = (int)x;

我们都知道结果是2,但我想知道为什么我们得到这个结果,理论是什么以及系统如何工作?可以用二进制形式(IEEE)来解释吗?

2 个答案:

答案 0 :(得分:2)

C ++11§4.9/ 1:

  

转换截断;也就是说,丢弃小数部分。如果截断值不能,则行为未定义   以目的地类型表示。

就是这样,它的理论:因为标准是这样说的

这是一种合理的语言设计选择,但绝不是唯一合理的选择。

答案 1 :(得分:1)

这在C ++标准(草案标准N3337)中指定

  

4.9浮动积分转换

     

1浮点类型的prvalue可以转换为整数类型的prvalue。转换截断;也就是说,丢弃小数部分。如果截断的值无法在目标类型中表示,则行为未定义。 [注意:如果目的地类型是bool,请参阅4.12。 - 结束记录]