2017-01-17 3 views
1

난 그냥 JScience의 이상한 행동 건너 온 (4.3.1) (I 1 유로를 지불하면 내가 1.05 USD를 얻을 의미) :JScience 화폐 단위 변환이 거꾸로되어 있습니까? 허구 전환율 <code>1.05</code>으로 USD로 EUR을 변환 할 때

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 

는 어쩌면 난 그냥 내 머리에 매듭을 가지고 있지만, 심지어이 최소한의 재생에 나는이 파악하지 못하는 것 같습니다.

답변

1

setExchangeRate() 메서드 "이 Currency의 환율을 기준 통화에 상대적으로 설정합니다." 귀하의 예에서 참조 통화는 Currency.USD이어야하며 Currency.EUR이 아니어야합니다.

Currency.setReferenceCurrency(Currency.USD); 
Currency.EUR.setExchangeRate(1.05); // 1.0 € = 1.05 $ 
System.out.println(Currency.EUR.getConverterTo(Currency.USD).convert(1.0)); 

이것은 예상대로 1.05을 인쇄합니다. setReferenceCurrency()을 참조하십시오.