Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java与C#中的intBitsToFloat方法?_C#_Java_Floating Point_Bits - Fatal编程技术网

Java与C#中的intBitsToFloat方法?

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

在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
错误

我的问题是如何将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将数组转换为浮点(单个)