Я просто наткнулся на это странное поведение JScience (4.3.1) при преобразовании EUR в USD по курсу 1.05
фиктивного преобразования (то есть я получаю 1.05
USD, если я платить 1 евро):Преобразование денежных единиц JScience перевернуто?
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
Может быть, я просто узел в моем мозгу, но даже в этом минимальном воспроизводству я не кажется, чтобы понять это.