确定5个双精度值的最高双精度值

时间:2015-06-03 22:54:19

标签: android

我开发了一个手势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)?

感谢您的帮助

2 个答案:

答案 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
      }
   }
}

第一个始终是一个赋值,同时只有当新值大于旧值时才是第二个。