我开发了一个手势App。为此,我需要获得绘制手势的最高分值。
所以我实际上有5个不同的双得分值,如下:
06-04 00:38:34.605 21423-21423/de.gestureanywhere D/score﹕ score 3.6936744465393905|GOF2
06-04 00:38:34.605 21423-21423/de.gestureanywhere D/score﹕ score 2.021340609760623|Uhr
06-04 00:38:34.610 21423-21423/de.gestureanywhere D/score﹕ score 1.942381354120031|Spare Parts
06-04 00:38:34.610 21423-21423/de.gestureanywhere D/score﹕ score 1.1174127455877019|Screenshot Leicht
06-04 00:38:34.610 21423-21423/de.gestureanywhere D/score﹕ score 1.025620059028788|Shell
如何以编程方式获取这些值的prediction.score
的最大双精度值(在此示例中为3.69)?
感谢您的帮助
答案 0 :(得分:2)
使用:
Double.MAX_VALUE
http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#MAX_VALUE
保持double类型的最大正有限值的常量, (52年2月2日)·21023。它等于十六进制浮点字面值 0x1.fffffffffffffP + 1023也等于 Double.longBitsToDouble(0x7fefffffffffffffL)。
List<double[]> values = new ArrayList<double[]>();
values.add(new double[] {3.6936744465393905});
values.add(new double[] {2.021340609760623});
values.add(new double[] {1.942381354120031});
values.add(new double[] {1.1174127455877019});
values.add(new double[] {1.025620059028788});
double min=Double.MAX_VALUE, max=Double.MIN_VALUE;
for (double[] ds : values) {
for (double d : ds) {
if (d > max) max=d;
if (d < min ) min=d;
}
}
Log.i(TAG," Max value is: " + max);
答案 1 :(得分:2)
如果列表中有值...
public double getMaxValue(List<Double> values){
double maxValue = Double.MIN_VALUE;
for(Double d : values){
maxValue = d > maxValue ? d : maxValue;
}
}
或者如果担心表现......
public double getMaxValue(List<Double> values){
double maxValue = Double.MIN_VALUE;
for(Double d : values){
if(d > maxValue){
d = maxValue
}
}
}
第一个始终是一个赋值,同时只有当新值大于旧值时才是第二个。