2011-04-20 73 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