gpt4 book ai didi

java - 如何获取任何单位转换的转换因子

转载 作者:行者123 更新时间:2023-11-29 03:59:52 25 4
gpt4 key购买 nike

当你在 2 个实体之间转换时,你通常通过 UnitConverter .我应该如何找出转换因子是多少?例如:

public static final Unit<Length> KILOMETRE = METER.times(1000);
public static final Unit<Length> CENTIMETRE = METRE.divide(100);

我想以编程方式从转换器接口(interface)获取转换因子(即 1000 b/w 公里和米,或者在厘米到米的情况下为 1/100)

我不确定如何从 UnitConverter 界面获取此信息。

编辑1

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 派生的类,则必须检查它的接口(interface),看看该类的设计者是否足够好,可以公开返回乘数的方法.

查看从 UnitConverter 派生的一些 jscience 类:

  • > MultiplyConverter有一个 getFactor() 方法,它返回转换中使用的因子。
  • > AddConverter有一个 getOffset() 方法,它返回转换器在转换中添加的偏移量。
  • > RationalConverter ,如果我理解正确的话,通过将要转换的值乘以 quotient 进行转换两个数字 - 股息和除数。该类具有用于返回被除数和除数的方法 getDividend()getDivisor(),因此您可以自己执行除法以近似商。

所以我认为您的代码(如下)有误。因数不是除数,就像您在此处看到的那样 - 它是商数。

RationalConverter rationalConverter = (RationalConverter) unitConverter;
double divisor = rationalConverter.getDivisor().doubleValue();
double dividend = rationalConverter.getDividend().doubleValue();
factor = divisor;

关于java - 如何获取任何单位转换的转换因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4244277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com