C# 如何在不丢失小数点的情况下将float转换为int?就像它一样';它显示在内存中
让我们假设C# 如何在不丢失小数点的情况下将float转换为int?就像它一样';它显示在内存中,c#,.net,C#,.net,让我们假设float f=4.4 如果我在某个内存读取器中浏览f,并假设f是int,则得到值10829693 我不想像(int)f 当你说“类似于1151354611”时,有没有办法假设f为int并在C#中得到该值(1082969293)?你的意思是真的1082969293?是的,李已经正确回答了,并将在2分钟内被接受。当你说“类似于1151354611”时,你的意思是真的1082969293?是的,Lee的回答已经正确,将在2分钟内被接受。更快的方法是int i=BitConverter.To
float f=4.4
如果我在某个内存读取器中浏览f
,并假设f
是int
,则得到值10829693
我不想像(int)f
当你说“类似于1151354611”时,有没有办法假设f为int并在C#中得到该值(1082969293)?你的意思是真的
1082969293
?是的,李已经正确回答了,并将在2分钟内被接受。当你说“类似于1151354611”时,你的意思是真的1082969293
?是的,Lee的回答已经正确,将在2分钟内被接受。更快的方法是int i=BitConverter.ToInt32(BitConverter.GetBytes(f),0)代码>选择哪一个对你和你的同事来说更容易阅读。@Tory我认为只是打字更快。我怀疑编译器优化了这个变量。这就是说,我稍微喜欢更简洁的方式,因为var bytes
实际上并不比GetBytes
@TimGoodman传达任何额外的信息,抖动可能会将其编译掉,但即使优化打开,编译器仍会生成局部变量并使用stloc.#和ldloc.#。但是,是的,这只是低级的迂腐。一种更快的方法(丢失解释变量)是inti=BitConverter.ToInt32(BitConverter.GetBytes(f),0)代码>选择哪一个对你和你的同事来说更容易阅读。@Tory我认为只是打字更快。我怀疑编译器优化了这个变量。这就是说,我稍微喜欢更简洁的方式,因为var bytes
实际上并不比GetBytes
@TimGoodman传达任何额外的信息,抖动可能会将其编译掉,但即使优化打开,编译器仍会生成局部变量并使用stloc.#和ldloc.#。但是,是的,那只是低级的迂腐。
float f = 4.4f;
var bytes = BitConverter.GetBytes(f);
int i = BitConverter.ToInt32(bytes, 0);