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
请按任意键继续. . .*/
------解决方案--------------------