c#如何将float转换为int

san*_*art 3 c# floating-point int

我需要将float转换为int(单精度,32位),如:
'float:2(hex:40000000)to int:1073741824'.知道如何实现吗?
我在msdn帮助中寻找它但没有结果.

Dav*_*nan 8

float f = ...;
int i = BitConverter.ToInt32(BitConverter.GetBytes(f), 0);
Run Code Online (Sandbox Code Playgroud)


Ski*_*izz -1

如果您的目标是低于 .Net 4 且 BitConverter 不可用的版本,或者您想要将浮点数转换为 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);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

虽然有点啰嗦。