浮点数到 XR_BIAS 转换规则

本部分仅适用于 Windows 7 及更高版本的操作系统。

以下规则适用于将 float 转换为 XR_BIAS。 在这些规则中,假设起始 float 值为 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 的个数最重要的 10 位重新解释为结果。

float 转换为 XR_BIAS XR 端允许 0.6f Unit-Last-Place (ULP) 。 此容错意味着从 float 转换为 XR 后,允许支持表示的目标格式值 0.6f ULP 内的任何值映射到该值。 请注意,无限精确的结果的 1 ULP 表示,例如,允许实现将结果截断为 32 位,而不是执行舍入到最接近的均匀值,因为这样会导致在浮点数中表示的最后 ( (最低重要) 位置出现最多一个单位的错误。

反转数据的标准 Direct3D 版本 10 要求也适用。