【问题标题】:C# fixed point to floating pointC#定点转浮点
【发布时间】:2011-08-09 09:23:03
【问题描述】:

我正在尝试使用来自here 的示例代码获取真正的字体字形轮廓。

代码中存在一些小错误,包括它只考虑了代表字形点位置的固定点值的整个部分。

似乎有很多将浮点值转换为固定值的示例,但反之则不然。 如何将整个 FIXED 值转换为浮点值?

【问题讨论】:

  • 你的意思是从intdouble .. 不是已经通过隐式转换完成了..
  • @Hogan 不是真的,因为这只会说明它是否安全,而不是如何在 C# 中执行。

标签: c# floating-point fixed truetype


【解决方案1】:

我猜是个

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,因为分数不能是负数。

【讨论】:

  • 已经试过了;它要么不适合这种类型,要么我没有考虑到字体中有一些疯狂的东西。
  • 进一步阅读表明您是正确的。我使用的字体一定有一些疯狂的暗示。
猜你喜欢
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多