在标准的 32 位 IEEE 754 浮点值中,数字中最高有效位与其最低有效位之间的最大比率为 2 23。这是因为浮点编码有 24 位(包括一个“隐式位”)作为有效位(或小数)。例如,最高位可能是 2 23而最低位是 2 0 (1),或者最高位可能是 2 12而最低位是 2 -11。在您的情况下,您可能希望使用最高位 2 -1和最低位 2 -24。您告诉我们您要映射到的范围 ([0, 1]) 但不是您要映射的范围,因此我们无法告诉您要使用的比例因子。
如果您从无符号 16 位数字映射,范围为 [0, 65536),则可以使用 1/65536 的比例因子。(在许多语言中,您会编写1./65536
以获得浮点常量;1/65536
将是一个计算结果为零的整数表达式。)这种缩放会将您的所有数字映射到目标范围,其可用精度“低于”数字,但它会不要为添加数字或其他增加幅度的操作留下任何余量。如果您想在将结果保持在区间 [0, 1] 的同时为更多算术留出空间,那么您需要更大的比率(更小的比例因子)。
您应该使用 2 的幂作为比例因子。乘以 2 的幂在二进制浮点中没有舍入误差。乘以十次方或其倒数(这必然是近似的,因为十次方的倒数不能用二进制浮点数精确表示)通常会导致舍入误差。
在标准的 64 位 IEEE 浮点值中,最大比率为 2 52。
你问最大值 16BIT_MULTIPLIER 可以是多少,但这不太可能是你真正想要的。您可以使 16BIT_MULTIPLIER 尽可能大,直到数字的低位达到 2 -149。此时,您到达指数范围的末尾(高位为 2 -126),并且无法表示具有较小值的位(在 32 位浮点中)。