Android 需要更改浮点精度
我已经开始阅读android中的Android 需要更改浮点精度,android,renderscript,Android,Renderscript,我已经开始阅读android中的RenderScript。我正在关注一个特别的博客 在阅读过程中,我遇到了名为“设置浮点精度”的部分 这似乎是一个noob问题,但为什么我们需要改变浮点精度呢?我们得到了什么好处?特别是与RenderScript相关的任何内容?精度基本上就是它。它告诉我们屏幕上的东西会画得多么精确。在某些情况下,浮点精度本身或与内存或性能等其他因素相比可能微不足道。如果您的设备屏幕小,内存低,则不需要双精度来绘制模型。这些精度用于renderscript的计算部分。通常,它们不会
RenderScript
。我正在关注一个特别的博客
在阅读过程中,我遇到了名为“设置浮点精度”的部分
这似乎是一个noob问题,但为什么我们需要改变浮点精度呢?我们得到了什么好处?特别是与RenderScript相关的任何内容?精度基本上就是它。它告诉我们屏幕上的东西会画得多么精确。在某些情况下,浮点精度本身或与内存或性能等其他因素相比可能微不足道。如果您的设备屏幕小,内存低,则不需要双精度来绘制模型。这些精度用于renderscript的计算部分。通常,它们不会影响渲染,在渲染中,您将获得远低于IEEE 754的GL精度,但您不应该使用该精度,因为renderscript的图形部分已被弃用 本质上,您应该使用rs_fp_,因为这将使您进入支持移动GPU和SIMD的CPU设备的最高范围 rs_fp_relaxed允许对去噪和舍入到零操作进行刷新到零。这会影响对“一半”、“浮点”和“双精度”类型进行数学运算时的答案。虽然你也应该避免双倍,如果你想通过移动GPU加速,而且即使在本机支持双倍的设备上也不会受到速度的影响 我建议查看浮动上的wiki页面: 要点是浮点数分为两部分:指数和有效位,类似于1.23*10^13的科学记数法。当指数均为0时,则数字为非规范数。因此,如果您的计算结果是指数为0的值,那么有效位也将最终为零,而不是实际值。对于float32,具体值为1.1754942E-38(0x7ffff)到1.4E-45(0x1)以及相应的负值 当您使用两个浮点数进行数学运算时,舍入到零将生效。一个实现不会计算额外的精度位数,以知道最后一位的舍入方式,因此您可以从舍入到偶数实现减少1 ulp。通常1 ulp非常小,但绝对差异取决于您的值在实数空间中的位置。例如,1.0编码为0x3f800000。1 ulp错误可能为您提供0x3f800001,该值已转换为1.0000001