在 Android API 的最新更新中,FloatMath
标记有以下 lint-warning:
在旧版本的 Android 中,出于性能考虑,建议在浮点数上使用 android.util.FloatMath。然而,在现代硬件上,double 与 float 一样快(尽管它们占用更多内存),并且在最新版本的 Android 中,由于 JIT 优化 java.lang.Math 的方式,FloatMath 实际上比使用 java.lang.Math 慢. 因此,如果您只针对 Froyo 及更高版本,则应使用 Math 而不是 FloatMath。
这里还提到,double 和 float 在最近的硬件上速度相等。
我在我目前正在处理的应用程序中使用了一些三角数学(针对 Froyo 及更高版本),但不需要高精度,FloatMath
所以到目前为止我一直在使用浮点数,并且不需要切换到双精度数。
但是,“use Math
over FloatMath
”-recommendation 并没有说明如果 float 是所需的结果,则使用哪一个。
所以,简而言之;哪个更可取?
float foo = FloatMath.sin(bar);
或者
float foo = (float) Math.sin(bar);
顺便说一句,我只有一个 Froyo 设备,所以我不能自己做任何适当的基准测试。
从 API 级别 22 开始,FloatMath 类已被弃用,取而代之的是常规的 Math 类。