if (!MoreMath.nearlyEquals(av, bv, 0.00000008)) return false;
long aHourLong = (new Double(av/3600000).longValue()); long bHourLong = (new Double(bv/3600000).longValue()); if (aHourLong != bHourLong) return false;
  private boolean comparePreferencesInner(Task a, Task b) {    Enumeration ae = a.getPreferences();    while (ae.hasMoreElements()) {      Preference p = (Preference) ae.nextElement();      int at = p.getAspectType();      double av = p.getScoringFunction().getBest().getValue();      double bv = getPreferenceBestValue(b, at);      if (at == AspectType.START_TIME || at == AspectType.END_TIME) {        //for times say they are nearly equal if they are within 30 minutes        // it could be longer if we only had daily buckets - but this should        // work for both daily and hourly buckets        if (!MoreMath.nearlyEquals(av, bv, 0.00000008)) return false;      }  else {        if (!MoreMath.nearlyEquals(av, bv, 0.0001)) return false;      }    }    return true;  }