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但我仍然有同样的问题
仅强制转换是一种完全不同的操作。您需要BitConverter.ToSingle(byte[], int)
将int
转换为字节数组,并可能根据所需的endianness颠倒顺序。(编辑:可能不需要这样做,因为两个转换都使用相同的endianness;任何不需要的endianness都会自行修复。)double
有BitConverter.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)。