将int转换为float会更改值

时间:2019-02-21 16:51:10

标签: c++ c casting floating-point int

有一些int浮点转换的情况,我发现原始值发生了变化。

例如:

int x = 49941310;
float y = (float) (x);
int z = (int) (y);

printf("%d, %f, %d",x,y,z);

Expecting: 49941310, 49941310.0000, 49941310...
Actual:    49941310, 49941312.0000, 49941312...

如果是18595769,我会得到18595768。

我也在c ++中尝试过static_cast,发生了同样的事情。 我知道23位存储尾数,9位存储符号和指数。我的问题是,如果我想退回原价怎么办?

0 个答案:

没有答案