package org.goko.core.common.measure.quantity;
import java.math.BigDecimal;
import org.goko.core.common.measure.units.Unit;
public interface Quantity<Q extends Quantity<Q>> {
Q to(Unit<Q> unit);
double doubleValue(Unit<Q> unit);
BigDecimal value(Unit<Q> unit);
Unit<Q> getUnit();
Q add(Q q);
Q subtract(Q q);
Q multiply(BigDecimal n);
Q multiply(int n);
Q divide(BigDecimal n);
Q divide(int n);
Number divide(Q q);
Q abs();
Q negate();
boolean lowerThan(Q quantity);
boolean lowerThanOrEqualTo(Q quantity);
boolean greaterThan(Q quantity);
boolean greaterThanOrEqualTo(Q quantity);
boolean almostEquals(Q quantity, double error);
}