Java VS C#中的intBitsToFloat方法?

在C#中将位转换为float时,我输入的数字错误。

我们使用这个位number= 1065324597

Java中 ,如果我想从bit转换为float,我将使用intBitsToFloat方法

 int intbits= 1065324597; System.out.println(Float.intBitsToFloat(intbits)); 

输出: 0.9982942 ,这是我想要在C#中获得正确输出


但是,在C#中我使用过

 int intbits= 1065324597; Console.WriteLine((float)intbits); 

输出: 1.065325E+09错!

我的问题是你如何在C#中转换inbitsToFloat?

我的尝试:我查看了这里的文档http://msdn.microsoft.com/en-us/library/aa987800(v=vs.80).aspx但我仍然有同样的麻烦

只是施法是一个完全不同的操作。 你需要将int转换为字节数组的BitConverter.ToSingle(byte[], int) – 并且可能根据你想要的字节顺序颠倒顺序。 (编辑:可能不需要这个,因为两个转换都使用相同的字节顺序;任何不需要的字节顺序都会自行修复。) BitConverter.DoubleToInt64Bitsdouble ,但没有直接float等效。

示例代码:

 int x = 1065324597; byte[] bytes = BitConverter.GetBytes(x); float f = BitConverter.ToSingle(bytes, 0); Console.WriteLine(f); 

我想补充一下jon双向飞碟说的话,对于大浮动,如果你不想要“E +”输出,你应该这样做:

 intbits.ToString("N0"); 

试试吧……

 var myBytes = BitConverter.GetBytes(1065324597); var mySingle = BitConverter.ToSingle(myBytes,0); 

BitConverter.GetBytes将您的整数转换为四字节数组。 然后BitConverter.ToSingle将您的数组转换为float(单个)。