我遇到了麻烦:
int q = 150;
float s = 0.7f;
float z = q*s;
int z1 = (int) (q*s);
int z2 = (int) z;
Run Code Online (Sandbox Code Playgroud)
这导致了
z1是int与价值104z2是int与价值105有谁能解释一下?我不明白这些结果.
为了避免关闭,我(RenéVogt)添加了这些信息:
q*s得到一个float值105.0f(或者可能104.999999,但字符串表示最终为105).z是float的105现在的问题是,为什么会(int)z产生结果105,但(int)(q*s)结果104呢?我可以在我的机器上重现这个(i7,Win10,VS2015,.NET4.6.1)
和IL代码:
// Initialisation
// q = 150
ldc.i4 0x96
stloc.0
// s = 0.7f
ldc.r4 0.69999999
stloc.1 …Run Code Online (Sandbox Code Playgroud)