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