如果我们将浮点数据的小数部分赋给一个int会怎样?

时间:2018-10-01 17:13:02

标签: c++

我知道int只能存储非十进制数字,但是在这种情况下:

int n=3.14

它将仅存储3,但是我的问题是.14将会如何?它会丢失在内存中,被丢弃还是被暂时存储吗?

4 个答案:

答案 0 :(得分:2)

浮点数的小数部分在分配给整数类型时会被截断。

来自C++ Standard

  

浮点类型的prvalue可以转换为整数类型的prvalue。转换被截断;即,小数部分被丢弃。如果无法在目标类型中表示截断的值,则该行为未定义。 [注意:如果目标类型为bool,请参见conv.bool。 — 尾注]

答案 1 :(得分:0)

将浮点值分配给整数类型时,小数点将被截断。

所以在您的示例中

int n = 3.14;  // will result in n == 3

答案 2 :(得分:0)

小数部分将完全消失。通过将整数变量分配给float变量然后打印float可以看到这一点。如果经过舍入(对于小整数这不是问题),它将打印为3.00 ....

答案 3 :(得分:-2)

如果您已经将浮点数存储为int,则该点被“切分”后的部分也将在对象中发生,即不属于该存储类型的数据就不会记录在该对象/变量中。