@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;

    }
@ 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 ; }
/*[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})