C#里面有没有类似C里的函数frexp(),分解浮点数函数?

marlin3018 2012-04-20 03:16:52
请问C#里面有没有frexp()函数呢,我需要将浮点数var分解为数字部分(尾数部分)x和以2为底的指数部分n,即val=x*2n。怎么来实现呢?
...全文
148 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
蔡袅 2012-04-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 6 楼 的回复:

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

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


请……
[/Quote]这是一个库文件,导出了该函数,system32下包含了这个msvcrt.dll可以去搜下,大部分我们PInvoke的导出函数都可见于system32文件中,但是有些函数是我们在安装VS的时候会帮我们导入头文件才有。
marlin3018 2012-04-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

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

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

请问这个文件"msvcrt.dll"在哪里可以找到呢?
蔡袅 2012-04-20
  • 打赏
  • 举报
回复
C# 没有这个等价函数,处理也比较麻烦,还是P\Invoke合适:

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




bigbaldy 2012-04-20
  • 打赏
  • 举报
回复
MSDN里面说了,.net里没有等价的函数,直接PInvoke吧,为啥非得用C#
woairuijuan9 2012-04-20
  • 打赏
  • 举报
回复
楼上正解,还有一个偏方法,就是将浮点数转换为字符串再进行处理,之后转换回来
threenewbee 2012-04-20
  • 打赏
  • 举报
回复
BitConverter.GetBytes(float)

然后根据标准,移位获得符号、尾数和指数
tianyunxiatian 2012-04-20
  • 打赏
  • 举报
回复
好像没有,我可能技术不精吧,所以没发现有这样的函数
tianyunxiatian 2012-04-20
  • 打赏
  • 举报
回复
好像没有,我可能技术不精吧,所以没发现有这样的函数

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧