2011-04-20 71 views
2

我试图从here使用示例代码来获得真正的字体字形轮廓。C#定点浮点

代码中有一些小的错误,包括它只考虑代表字形点位置的整个固定点值。

似乎有很多将浮点值转换为固定值的示例,但反之亦然。 如何将整个FIXED值转换为浮点值?

+1

[Fixed Point to Floating Point and Backwards]的可能重复(http://stackoverflow.com/questions/2574487/fixed-point-to-floating-point-and-backwards) – Hogan 2011-04-20 10:35:24

+1

你是不是喜欢从'int '到'双'..是不是已经通过隐式转换完成.. – 2011-04-20 10:36:20

+0

@Hogan不是真的,因为它只告诉它是否安全,而不是如何在C#中做到这一点。 – 2011-04-20 12:27:01

回答

3

我想这是一个

public struct FIXED 
{ 
    public short fract; 
    public short value; 
} 
要转换为浮点

。这样fixed-point numbers可转化这样

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

我通过65536划分因为short是16位(2^16)。这实际上有点奇怪,它是short而不是ushort,因为分数不能为负数。

+0

已经试过这个;对于这种类型,要么是不正确的,要么是我没有考虑到的字体中会出现一些疯狂的东西。 – 2011-04-20 12:37:57

+0

进一步阅读表明你是正确的。我正在使用的字体中必定会出现一些令人兴奋的暗示。 – 2011-04-20 12:51:21