簡體   English   中英

JScience 貨幣單位轉換是否顛倒?

[英]Is JScience money unit conversion inverted?

我剛剛在將歐元轉換為美元時遇到了 JScience (4.3.1) 的這種奇怪行為,虛擬轉換率為1.05 (這意味着如果我支付 1 歐元,我會得到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

也許我的腦子里只有一個結,但即使在這個最小的復制中,我似乎也沒有弄清楚這一點。

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM