gpt4 book ai didi

java - JScience 货币单位换算是否颠倒?

转载 作者:行者123 更新时间:2023-11-30 06:56:30 26 4
gpt4 key购买 nike

当我以虚构的汇率 1.05 将欧元兑换为美元时,我刚刚遇到了 JScience (4.3.1) 的奇怪行为(这意味着如果我支付 1 欧元):

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

关于java - JScience 货币单位换算是否颠倒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41687439/

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