Java 中默认的浮点类型是 double。如果你硬编码一个常量,比如2.5
在你的程序中,Java会自动将其变为双精度。当您对浮点数或整数执行可能受益于更高精度的操作时,该类型将“提升”为双精度。
但在 Android API 中,从音量到矩形坐标,一切似乎都是浮点数。有一个结构叫RectF
用于大多数绘图; F 代表浮动。对于那些将晋级双打选回的程序员来说,这确实是一件痛苦的事(float)
很经常。难道我们不都同意 Java 代码本身就很混乱和冗长吗?
通常数学协处理器和加速器更喜欢 Java 中的 double,因为它对应于一种内部类型。 Android 的 Dalvik VM 是否出于某种原因更喜欢浮动?或者所有的浮动只是 API 设计扭曲的结果?
在没有 FPU 的设备上,单精度浮点运算比双精度浮点运算快得多。因此,Android 框架提供了一个 FloatMath 类,它复制了一些 java.lang.Math 函数,但使用 float 参数而不是 double。
在最近带有 FPU 的 Android 设备上,单精度和双精度运算所需的时间大致相同,并且明显快于软件实现。 (“性能设计”页面是为 G1 编写的,需要更新以反映各种变化。)
顺便说一句,写“2.5f”或“(float) 2.5”并不重要。无论哪种方式,javac 都知道您需要一个单精度浮点常量,这就是它生成的内容。您可以通过编写示例程序并检查生成的字节码来验证这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)