首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JScience货币单位转换是否颠倒?

JScience货币单位转换是否颠倒?
EN

Stack Overflow用户
提问于 2017-01-17 08:54:52
回答 1查看 84关注 0票数 1

我只是在使用虚构的转换率1.05将欧元转换为美元时遇到了JScience (4.3.1)的这种奇怪行为(这意味着如果我支付1欧元,我就会得到1.05美元):

代码语言:javascript
复制
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)

从一个长度单位到另一个长度单位的转换工作方式不同:

代码语言:javascript
复制
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

也许我的大脑中有一个结,但即使是在这个最小的复制中,我似乎也没有弄清楚这一点。

EN

回答 1

Stack Overflow用户

发布于 2017-01-18 15:58:29

setExchangeRate()方法“设置此Currency相对于参考货币的汇率”。在您的示例中,参考货币应该是Currency.USD,而不是Currency.EUR

代码语言:javascript
复制
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()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41687439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档