我刚刚遇到了 JScience (4.3.1) 的这种奇怪行为,当时使用虚构的兑换率将欧元转换为美元(这意味着如果我支付 1 欧元,1.05
我会得到美元):1.05
Currency unitMoney1 = Currency.EUR;
Currency unitMoney2 = Currency.USD;
Currency.setReferenceCurrency(unitMoney1);
unitMoney2.setExchangeRate(1.05);
result = unitMoney1.getConverterTo(unitMoney2).convert(1.0);
System.out.println(result);
//prints 0.9523809523809523 (unexpected, should be 1.05)
result = unitMoney2.getConverterTo(unitMoney1).convert(result);
System.out.println(result);
//prints 1.0 (expected)
从一种长度单位转换为另一种长度单位的工作方式不同:
Unit<Length> unitLength1 = (Unit<Length>) Unit.valueOf("m");
Unit<Length> unitLength2 = (Unit<Length>) Unit.valueOf("mm");
double result = unitLength1.getConverterTo(unitLength2).convert(1.0);
System.out.println(result);
// prints 1000.0
也许我的脑子里有一个结,但即使在这个最小的复制中,我似乎也没有弄清楚这一点。