Java与C#中的intBitsToFloat方法?
在C#中将位转换为浮点时,我得到了错误的数字 让我们使用这个位Java与C#中的intBitsToFloat方法?,c#,java,floating-point,bits,C#,Java,Floating Point,Bits,在C#中将位转换为浮点时,我得到了错误的数字 让我们使用这个位number=1065324597 在Java中,如果我想从位转换为浮点,我将使用intBitsToFloat方法 int intbits= 1065324597; System.out.println(Float.intBitsToFloat(intbits)); 输出:0.9982942我希望在C语言中获得的正确输出# 然而,在C#中,我使用了 int intbits= 1065324597; Console.WriteL
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
错误
我的问题是如何将InBits转换为C#中的Loat
我的尝试:
我在这里查阅了文档
但我仍然有同样的问题只是铸造是一种完全不同的操作。您需要将int
转换为一个字节数组,并且可能根据您想要的endianness颠倒顺序。(编辑:可能不需要这样做,因为两种转换都使用相同的尾数;任何不需要的尾数都会自行修复。)有位转换器。doubleToInt64位用于double
,但没有直接的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);
GetBytes将整数转换为四字节数组。然后BitConverter.ToSingle将数组转换为浮点(单个)