C # фиксированная точка с плавающей точкой - PullRequest
2 голосов
/ 20 апреля 2011

Я пытаюсь получить контуры глифа шрифта истинного типа, используя пример кода из здесь .

В коде есть некоторые небольшие ошибки, в том числе тот факт, что он рассматривает только всю часть значений фиксированной точки, которые представляют положения точек глифов.

Кажется, есть много примеров преобразования значений с плавающей запятой в фиксированные, но не наоборот. Как я могу преобразовать все значение FIXED в значение с плавающей запятой?

1 Ответ

3 голосов
/ 20 апреля 2011

Я думаю, это

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, поскольку дробь не может быть отрицательной.

...