C#里面有没有类似C里的函数frexp(),分解浮点数函数?解决方法
C#里面有没有类似C里的函数frexp(),分解浮点数函数?
请问C#里面有没有frexp()函数呢,我需要将浮点数var分解为数字部分(尾数部分)x和以2为底的指数部分n,即val=x*2n。怎么来实现呢?
------解决方案--------------------
BitConverter.GetBytes(float)
然后根据标准,移位获得符号、尾数和指数
------解决方案--------------------
楼上正解,还有一个偏方法,就是将浮点数转换为字符串再进行处理,之后转换回来
------解决方案--------------------
MSDN里面说了,.net里没有等价的函数,直接PInvoke吧,为啥非得用C#
------解决方案--------------------
C# 没有这个等价函数,处理也比较麻烦,还是P\Invoke合适:
请问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 请按任意键继续. . .*/
------解决方案--------------------