本部分仅适用于 Windows 7 及更高版本的作系统。
以下规则适用于将 float 转换为XR_BIAS。 在这些规则中,假设起始浮点值为 c。
如果 c 为 NaN,则结果为 0;否则,将应用以下规则。 NaN 表示“不是数字”,这意味着表示以浮点格式不可用的值的符号实体。
执行以下作,从浮点刻度转换为整数刻度:
c = c * 510
上述作可能会引发溢出。
对偏差执行以下作:
c = c + 384
上述作可能会引发溢出。
根据 c 的指数执行以下作之一来固定:
如果 c 的指数大于或等于 2(>= 2 或 c 为 INF),则结果为 0x3ff,这大致相当于 1.2529。
如果 c 的指数小于 0(< 0 或 c 为 -INF),则结果为 0x0,表示大约 -0.7529。
将 c 的 mantissa 的最大有效 10 位解释为结果。
允许在 XR 端将浮点数转换为 XR_BIAS 0.6f Unit-Last-Place(ULP)。 此容差意味着在从 float 转换为 XR 后,允许将支持表示的目标格式值的 0.6f ULP 中的任何值映射到该值。 请注意,无限精确结果的 1 个 ULP 意味着,例如,允许实现将结果截断为 32 位,而不是执行舍入到最接近的偶数,因为这样会导致在浮点数中表示的最后一个单位(最小有效)位置的最多一个单位的错误。
对反转数据的标准 Direct3D 版本 10 要求也适用。