code: package org.gridkit.jvmtool.gcflow;
  
  public class FormatHelper {
  
      public static String toMemoryUnits(double value) {
          if (value == 0) {
              return "0";
          }
          if (value < (10l << 10)) {
              String val = String.format("%.2f", value).trim();
              if (val.endsWith(".00")) {
                  val = val.substring(0, val.length() - 3);
              }
              else if (val.indexOf('.') > 0 && val.endsWith("0")) {
                  val = val.substring(0, val.length() - 1);
              }
              return val;
          }
          else if (value < (1l << 20)) {
              return String.format("%5.4gKi", value / (1l << 10)).trim();
          }
          else if (value < (1l << 30)) {
              return String.format("%5.4gMi", value / (1l << 20)).trim();
          }
          else if (value < (1l << 40)) {
              return String.format("%5.4gGi", value / (1l << 30)).trim();
          }
          else {
              return String.format("%dGi", (long)(value / (1l << 30))).trim();
          }
      }
  
      public static String toSeconds(double value) {
          return String.format("%6.3fB", value);
      }
  
  }
  