0

在 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 但我仍然遇到同样的问题

4

3 回答 3

9

只是铸造是完全不同的操作。您需要BitConverter.ToSingle(byte[], int)将 转换int为字节数组 - 并可能根据您想要的字节序颠倒顺序。(编辑:可能不需要这个,因为两种转换都使用相同的字节序;任何不需要的字节序都会自行修复。)有BitConverter.DoubleToInt64Bitsfor double,但没有直接的float等价物。

示例代码:

int x = 1065324597;
byte[] bytes = BitConverter.GetBytes(x);
float f = BitConverter.ToSingle(bytes, 0);
Console.WriteLine(f);
于 2013-08-06T11:35:41.747 回答
1

我想补充一下 jon skeet 所说的内容,对于大浮点数,如果你不想要“E+”输出,你应该这样做:

intbits.ToString("N0");
于 2013-08-06T11:38:36.097 回答
1

试试这个...

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

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

于 2013-08-06T11:40:21.703 回答