Java在货币代表和货币转换方面的表现?

时间:2018-05-30 01:03:48

标签: java double real-time currency bigdecimal

我正在开发一个具有性能问题的实时应用程序,因为BigDecimal是用于存储金额的东西。出于这个原因,现在我们将钱存储为美分,或者实际上是我们正在使用的任何货币的最小金额。

我们处理不同的货币,我们需要快速回答的问题是“我们用这些A单位得到多少B?”。值得一提的是,我们无法将这一数额提高,即我们需要实际可能转换的数量,而不是更多。

使用double存储汇率很棘手。有时费率会比实际十进制数略高(或低于),因此结果可能会偶尔减去1个单位。

double rateJPYUSD = 10.0; // 10.0 JPY/USD

long multiplierUSD = 100; // USD cents
long multiplierJPY = 1; // JPY units

long amountUSD = 1230; // 12.30 USD
long amountJPY = (long) (amountUSD * rateJPYUSD / multiplierUSD * multiplierJPY);

此处amountJPY可以是123或122,具体取决于双数(10.0)是略高于(10.0000000001)还是低于(9.9999999999)实际十进制数(10)。

所以问题是什么是最快的方法来实现它?

0 个答案:

没有答案