Java 如何获取任何单位转换的转换因子
在两个实体之间转换时,通常通过。我应该如何确定转换系数是多少?例如:Java 如何获取任何单位转换的转换因子,java,jscience,jsr-275,Java,Jscience,Jsr 275,在两个实体之间转换时,通常通过。我应该如何确定转换系数是多少?例如: public static final Unit<Length> KILOMETRE = METER.times(1000); public static final Unit<Length> CENTIMETRE = METRE.divide(100); 公共静态最终单位公里=米乘以(1000); 公共静态最终单位厘米=米除以(100); 我希望从转换器接口以编程方式获得转换系数(即1000 b/
public static final Unit<Length> KILOMETRE = METER.times(1000);
public static final Unit<Length> CENTIMETRE = METRE.divide(100);
公共静态最终单位公里=米乘以(1000);
公共静态最终单位厘米=米除以(100);
我希望从转换器接口以编程方式获得转换系数(即1000 b/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;
}
}
protected double getConvFactor(单位从,单位到){
双因子=-1;
UnitConverter UnitConverter=从.getConverterTo(到);
if(多路转换器的单位转换器实例){
多路转换器多路转换器=(多路转换器)单位转换器;
factor=multiplyConverter.getFactor();
}else if(添加转换器的unitConverter实例){
AddConverter AddConverter=(AddConverter)unitConverter;
factor=addConverter.getOffset();
}else if(定量转换器的单位转换器实例){
定量转换器定量转换器=(定量转换器)单位转换器;
double divisior=rationalConverter.getdivisior().doubleValue();
double divident=rationalConverter.getdivident().doubleValue();
因子=除数;
}
}
在OP发布更多代码后编辑:
UnitConverter
是一个抽象类,因此必须从中派生,才能为您心目中的特定单位创建转换器
如果您已经在使用从UnitConverter
派生的类,则必须检查它的接口,以查看该类的设计器是否足以公开返回乘法因子的方法
查看从UnitConverter
派生的一些jscience类:
- 具有一个
方法,该方法返回转换中使用的因子李>getFactor()
- 具有一个
方法,该方法返回转换器在转换中添加的偏移量getOffset()
- ,如果我理解正确的话,通过将被转换的值乘以两个数的乘积进行转换-被除数和除数。该类具有返回被除数和除数的方法,
和getdivident()
,因此您可以自己执行除法以近似商getdivisior()
RationalConverter rationalConverter = (RationalConverter) unitConverter;
double divisor = rationalConverter.getDivisor().doubleValue();
double dividend = rationalConverter.getDividend().doubleValue();
factor = divisor;
在OP发布更多代码后编辑:
UnitConverter
是一个抽象类,因此必须从中派生,才能为您心目中的特定单位创建转换器
如果您已经在使用从UnitConverter
派生的类,则必须检查它的接口,以查看该类的设计器是否足以公开返回乘法因子的方法
查看从UnitConverter
派生的一些jscience类:
- 具有一个
方法,该方法返回转换中使用的因子李>getFactor()
- 具有一个
方法,该方法返回转换器在转换中添加的偏移量getOffset()
- ,如果我理解正确的话,通过将被转换的值乘以两个数的乘积进行转换-被除数和除数。该类具有返回被除数和除数的方法,
和getdivident()
,因此您可以自己执行除法以近似商getdivisior()
RationalConverter rationalConverter = (RationalConverter) unitConverter;
double divisor = rationalConverter.getDivisor().doubleValue();
double dividend = rationalConverter.getDividend().doubleValue();
factor = divisor;
有没有理由使用-ve-voteis有没有理由使用-ve-vote大多数单位似乎都在使用理性变换器,它有一个除数和一个除数。在这种情况下,没有明确的方法来确定转换因子,因为根据左侧单位是什么,转换因子从除数或被除数中提取。在这种情况下,不确定如何清楚地识别,其余的转换器似乎没问题。大多数单元似乎使用了理性转换器,它有一个除数和一个除数。在这种情况下,没有明确的方法来确定转换因子,因为根据左侧单位是什么,转换因子从除数或被除数中提取。不知道如何在这种情况下清楚地识别,其余的转换器似乎没问题。