Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 需要更改浮点精度_Android_Renderscript - Fatal编程技术网

Android 需要更改浮点精度

Android 需要更改浮点精度,android,renderscript,Android,Renderscript,我已经开始阅读android中的RenderScript。我正在关注一个特别的博客 在阅读过程中,我遇到了名为“设置浮点精度”的部分 这似乎是一个noob问题,但为什么我们需要改变浮点精度呢?我们得到了什么好处?特别是与RenderScript相关的任何内容?精度基本上就是它。它告诉我们屏幕上的东西会画得多么精确。在某些情况下,浮点精度本身或与内存或性能等其他因素相比可能微不足道。如果您的设备屏幕小,内存低,则不需要双精度来绘制模型。这些精度用于renderscript的计算部分。通常,它们不会

我已经开始阅读android中的
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