也许我不太了解IEEE754标准,但是给定了float
或的一组浮点值,double
例如:
56.543f 3238.124124f 121.3f ...
你可以将它们转换中值从0
到1
,所以你归他们,通过采取适当的常见因素,同时考虑什么是最大值,并在设定的最低值。
现在,我的观点是,在此转换中,与第一个目标所需的精度水平相比,目标范围从0
到的精度要高得多1
,尤其是如果第一个目标值覆盖的范围很广数值范围(非常大和非常小的值)。
如何float
或double
(或者,如果你想IEEE 754标准)类型可以处理这种情况而知道我基本上不会需要一个整数部分的第二组值提供更准确?
还是根本无法解决这个问题,我需要使用完全不同类型的定点数学?
浮点数以类似于科学计数法的格式存储。在内部,它们将1
二进制表示形式的开头与有效位数的顶部对齐。相对于其自身的大小,每个值均以相同数量的精度的二进制数字进行传送。
当您将一组浮点值压缩到0..1范围内时,您将获得的唯一精度损失将归因于该过程各个步骤中发生的舍入。
如果仅通过缩放进行压缩,则在尾数的LSB附近只会损失少量精度(大约1或2 ulp,其中ulp表示“最后一位的单位”)。
如果您还需要转移数据,那么事情将变得更加棘手。如果您的数据都是正数,则减去最小数不会损坏任何东西。但是,如果您的数据是正负数据的混合,那么一些接近零的值可能会损失精度。
如果您以double
精确的方式进行所有算术运算,则将通过计算获得53位的精度。如果您的精度要求符合要求(可能的话),那么您会没事的。否则,确切的数字性能将取决于数据的分布。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句