code: @Override
      public long getPartialAmount(IsoUnit unit) {
  
          if (unit == null) {
              return 0;
          }
  
          boolean fractional = isFractionUnit(unit);
  
          for (int i = 0, n = this.items.size(); i < n; i++) {
              Item<U> item = this.items.get(i);
              U u = item.getUnit();
  
              if (u.equals(unit)) {
                  return item.getAmount();
              } else if (
                  fractional
                  && isFractionUnit(u)
              ) {
                  int d1 = u.getSymbol() - '0';
                  int d2 = unit.getSymbol() - '0';
                  int factor = 1;
  
                  for (int j = 0, m = Math.abs(d1 - d2); j < m; j++) {
                      factor *= 10;
                  }
  
                  if (d1 >= d2) {
                      return item.getAmount() / factor;
                  } else {
                      return item.getAmount() * factor;
                  }
              }
          }
  
          return 0;
  
      }
docs: /*[deutsch]
  <p>Liefert den Betrag zu einer Zeiteinheit. </p>
  
  <p>Wenn die angegebene Zeiteinheit nicht in der Zeitspanne enthalten ist,
  liefert die Methode den Wert {@code 0}. Sekundenbruchteile, die an der
  Symboldarstellung ihrer Einheiten erkennbar sind, werden automatisch
  konvertiert. Konkret: Wenn eine Zeitspanne z.B. Nanosekunden speichert,
  aber nach Mikrosekunden gefragt wird, dann wird der in der Zeitspanne
  enthaltene Nanosekundenwert mit dem Faktor {@code 1000} multipliziert
  und zur&uuml;ckgegeben. </p>
  
  @param   unit    time unit the amount is queried for (optional)
  @return  non-negative amount associated with given unit ({@code >= 0})