对于如下所示的输入,是否可以使用 Float.compare
来查找数组中最大的浮点数?
Float[] v = {0.38118651972530804, 0.3580139606405057, 0.7358862700995704};
float max = -1;
for (int i = 0; i < v.length; i++)
if (Float.compare(max,v[i]) > 0) max = v[i];
有没有更好的方法?或者可能存在一些精度错误?
我会使用集合并调用 max() 方法。参见:这里
一行怎么样:
Float max = Collections.max(Arrays.asList(v));
如果数组中的所有值都小于 -1,则可能会出现错误。最好将 max 初始化为 v[0]。
而且,您的代码会查找最小的元素。不是最大的元素。
Float[] v = {0.38118651972530804, 0.3580139606405057, 0.7358862700995704};
float max = v[0];
for (int i = 1; i < v.length; i++)
if (Float.compare(max, v[i]) < 0) max = v[i];
这个怎么样-
float max = v[0]; // the first item in array
// Loop through all items starting the second one
for (int i = 1; i < v.length; i++)
{
if (v[i] > max) // If current item is bigger, update max to current item
{
max = v[i];
}
}