C#定点到浮点

C#定点到浮点,c#,floating-point,fixed,truetype,C#,Floating Point,Fixed,Truetype,我正在尝试使用来自的示例代码获取真正的字体字形轮廓 代码中有一些小错误,包括它只考虑表示图示符点位置的整部分固定点值 似乎有很多将浮点值转换为固定值的例子,但不是相反。 如何将整个固定值转换为浮点值?我想这是一个 public struct FIXED { public short fract; public short value; } 要转换为浮点的。这样可以像这样转换 var fix = new FIXED { value = 42, fract = 16384 }; d

我正在尝试使用来自的示例代码获取真正的字体字形轮廓

代码中有一些小错误,包括它只考虑表示图示符点位置的整部分固定点值

似乎有很多将浮点值转换为固定值的例子,但不是相反。 如何将整个固定值转换为浮点值?

我想这是一个

public struct FIXED
{
    public short fract;
    public short value;
}
要转换为浮点的。这样可以像这样转换

var fix = new FIXED { value = 42, fract = 16384 };
double floating = fix.value + (double)fix.fract / 65536;

我除以
65536
,因为
short
是16位(2^16)。实际上有点奇怪,它是一个
short
而不是
ushort
,因为分数不能是负数。

你的意思是从
int
double
的可能重复。。这不是已经通过隐式转换完成了吗?@Hogan不是真的,因为这只说明它是否安全,而不是如何在C#中完成。他已经尝试过这一点;它不是不适合这种类型,就是我没有考虑到字体中有一些疯狂的东西。进一步阅读表明你是正确的。我使用的字体中一定有一些疯狂的暗示。