gpt4 book ai didi

android - 为什么 Android API 中有这么多 float ?

转载 作者:IT老高 更新时间:2023-10-28 23:26:45 26 4
gpt4 key购买 nike

Java 中的默认浮点类型是 double 。如果您将像 2.5 这样的常量硬编码到程序中,Java 会自动将其变为 double。当您对可能受益于更高精度的 float 或整数进行操作时,该类型将“提升”为 double 。

但在 Android API 中,一切似乎都是从音量到矩形坐标的 float 。大多数绘图中都使用了一个名为 RectF 的结构; F代表 float 。对于经常将提升的 double 类型转换回 (float) 的程序员来说,这真的很痛苦。难道我们不都同意 Java 代码本身就已经够困惑和冗长了吗?

通常数学协处理器和加速器更喜欢 Java 中的 double,因为它对应于一种内部类型。出于某种原因,Android 的 Dalvik VM 是否有一些更喜欢 float 的东西?还是所有的 float 只是 API 设计中的变态结果?

最佳答案

在没有 FPU 的设备上,单精度浮点运算比等效的 double 浮点运算快得多。因此,Android 框架提供了一个 FloatMath 类,该类复制了一些 java.lang.Math 函数,但使用浮点参数而不是 double 。

在具有 FPU 的最新 Android 设备上,单精度和 double 运算所需的时间大致相同,并且比软件实现要快得多。 (“为性能而设计”页面是为 G1 编写的,需要更新以反射(reflect)各种变化。)

顺便说一句,写“2.5f”或“(float) 2.5”并不重要。无论哪种方式,javac 都知道您需要一个单精度浮点常量,这就是它生成的。您可以通过编写示例程序并检查生成的字节码来验证这一点。

关于android - 为什么 Android API 中有这么多 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2475494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com