C# фиксированная точка с плавающей точкой

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

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

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

1 ответ

Решение

Я думаю, это

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

Другие вопросы по тегам