2011-04-20 4 views
2

J'essaie d'obtenir des contours de glyphes de police de type vrai en utilisant un exemple de code de here.C# point fixe à virgule flottante

Il y a quelques petites erreurs dans le code, y compris le fait qu'il ne considère que la partie entière des valeurs de points fixes qui représentent les positions de point des glyphes.

Il semble y avoir beaucoup d'exemples de conversion de valeurs à virgule flottante en valeurs fixes, mais pas l'inverse. Comment puis-je convertir toute la valeur FIXE en une valeur à virgule flottante?

+1

duplication possible de [Point fixe vers virgule flottante et vers l'arrière] (http://stackoverflow.com/questions/2574487/fixed-point-to-floating-point-and-backwards) – Hogan

+1

Voulez-vous dire de 'int 'to' double' .. n'est pas déjà fait par conversion implicite .. –

+0

@Hogan Pas vraiment puisque cela ne dit que si c'est sûr et non comment le faire en C#. –

Répondre

3

Je pense qu'il est un

public struct FIXED 
{ 
    public short fract; 
    public short value; 
} 

que vous voulez convertir en virgule flottante. Un tel fixed-point numbers peut être converti comme celui-ci

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

Je divise par 65536 parce qu'un short est 16 bits (2^16). C'est en fait un peu étrange que ce soit un short et non un ushort puisqu'une fraction ne peut pas être négative.

+0

Avait déjà essayé cela; c'est soit pas correct pour ce type ou il y a des choses folles dans les polices que je ne prends pas en compte. –

+0

Une autre lecture indique que vous avez raison. Il doit y avoir un shizzle fou d'allusion dans les polices que j'utilise. –