Java VS C#中的intBitsToFloat方法

本文关键字:intBitsToFloat 方法 中的 VS Java | 更新日期: 2023-09-27 18:26:39

在C#中将位转换为浮点时,我得到了错误的数字。

让我们使用这个比特number= 1065324597

Java中,如果我想从位转换为浮点,我会使用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但我仍然有同样的问题

Java VS C#中的intBitsToFloat方法

仅强制转换是一种完全不同的操作。您需要BitConverter.ToSingle(byte[], int)int转换为字节数组,并可能根据所需的endianness颠倒顺序。(编辑:可能不需要这样做,因为两个转换都使用相同的endianness;任何不需要的endianness都会自行修复。)doubleBitConverter.DoubleToInt64Bits,但没有直接等效的float

样本代码:

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

我想在jon skeet所说的基础上再加一句,对于大浮点,如果你不想要"E+"输出,你应该做:

intbits.ToString("N0");

试试这个。。。

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

BitConverter.GetBytes将整数转换为四字节数组。然后BitConverter.ToSingle将您的数组转换为浮点(single)。