質問
に変換する際に2体までの UnitConverter.いつ、どのようにする変換係数。例えば:
public static final Unit<Length> KILOMETRE = METER.times(1000);
public static final Unit<Length> CENTIMETRE = METRE.divide(100);
思変換係数のプログラムからコンバーターインタフェース(すなわち1000b/wキロメートルやメータまたは1/100の場合はセンチメートルをメートル)
くに位を取得すこれらの情報からUnitConverterインターフェース。
EDIT1
protected double getConvFactor(Unit<Length> from, Unit<Length> to) {
double factor = -1;
UnitConverter unitConverter = from.getConverterTo(to);
if (unitConverter instanceof MultiplyConverter) {
MultiplyConverter multiplyConverter = (MultiplyConverter) unitConverter;
factor = multiplyConverter.getFactor();
} else if (unitConverter instanceof AddConverter) {
AddConverter addConverter = (AddConverter) unitConverter;
factor = addConverter.getOffset();
} else if (unitConverter instanceof RationalConverter) {
RationalConverter rationalConverter = (RationalConverter) unitConverter;
double divisor = rationalConverter.getDivisor().doubleValue();
double dividend = rationalConverter.getDividend().doubleValue();
factor = divisor;
}
}
解決
編集後、更なるコードが投稿したOP:
UnitConverter
抽象クラスですでに由来することが定められていますの作成コンバータの特定の単位です。
いてクラスから派生 UnitConverter
, だッチでインターフェースのデザイナーのスク以外のリスクにしたくなる方法を返します増殖因子です。
を見ているのjscienceの派生クラス UnitConverter
:
MultiplyConverter
はgetFactor()
方法を返します因子に変換します。AddConverter
はgetOffset()
方法を返しますオフセットのコンバータを追加しに変換します。RationalConverter
, れば、私の理解で正確に変換するを乗じた値に変換して 商 二番号の配当金のdivisor.このクラスは方法getDividend()
やgetDivisor()
還元、配当金の除数"で使えを行う部門は自分自身近似商.
と思いコード(下)ではエラーになります。の因子ではないdivisorとお揃いのでしょう.
RationalConverter rationalConverter = (RationalConverter) unitConverter;
double divisor = rationalConverter.getDivisor().doubleValue();
double dividend = rationalConverter.getDividend().doubleValue();
factor = divisor;
所属していません StackOverflow