日期:2014-05-18  浏览次数:20862 次

C#里面有没有类似C里的函数frexp(),分解浮点数函数?
请问C#里面有没有frexp()函数呢,我需要将浮点数var分解为数字部分(尾数部分)x和以2为底的指数部分n,即val=x*2n。怎么来实现呢?

------解决方案--------------------
BitConverter.GetBytes(float)

然后根据标准,移位获得符号、尾数和指数
------解决方案--------------------
楼上正解,还有一个偏方法,就是将浮点数转换为字符串再进行处理,之后转换回来
------解决方案--------------------
MSDN里面说了,.net里没有等价的函数,直接PInvoke吧,为啥非得用C#
------解决方案--------------------
C# 没有这个等价函数,处理也比较麻烦,还是P\Invoke合适:

C# code
 class Program
    {
        [DllImport("msvcrt.dll")]
        public static extern double frexp(double val, out int eptr);
        static void Main(string[] args)
        {
            int eptr;
            double d = frexp(16.400000, out eptr);
            Console.WriteLine(eptr + "   " + d);
        }
    }
/*输出结果:

5   0.5125
请按任意键继续. . .*/

------解决方案--------------------
探讨

引用:

C# 没有这个等价函数,处理也比较麻烦,还是P\Invoke合适:

C# code
class Program
{
[DllImport("msvcrt.dll")]
public static extern double frexp(double val, out int eptr);
static void Main(stri……


请……