c#如何将float转换为int
我需要将float转换为int(单精度,32位),如下所示:
'float:2(hex:40000000)to int:1073741824'。 任何想法如何实现?
我在MSDN帮助中寻找它,但没有结果。
如果您针对BitNet转换器不可用的.Net 4版本进行瞄准,或者您想将浮点数转换为32位整数,请使用内存流:
using System;
using System.IO;
namespace Stream
{
class Program
{
static void Main (string [] args)
{
float
f = 1;
int
i;
MemoryStream
s = new MemoryStream ();
BinaryWriter
w = new BinaryWriter (s);
w.Write (f);
s.Position = 0;
BinaryReader
r = new BinaryReader (s);
i = r.ReadInt32 ();
s.Close ();
Console.WriteLine ("Float " + f + " = int " + i);
}
}
}
虽然有点冗长。
float f = ...;
int i = BitConverter.ToInt32(BitConverter.GetBytes(f), 0);
BitConverter.DoubleToInt64Bits,根据这个问题的接受答案。
如果上面的解决方案对你没有好处(由于它是以double
/ Double
而不是float
/ Single
),那么请参阅David Heffernan的答案。