由于 JavaScript 对浮点数有怪癖(例如 0.1+0.2 > 0.3,除法也类似),如何处理货币转换?通常货币兑换率是浮动的,从 6 位或更多小数点开始。将它们从一种货币转换为另一种货币,再转换为另一种货币,似乎很容易出现 javascript float 错误。虽然货币转换是很常见的任务,但我想知道人们通常如何处理这个问题?
目前,我没有任何解决方案,也不确定它是否在过去引起过问题。即使我有这个问题,也很可能会被遗漏。我简单地使用我拥有的任何货币汇率并乘法/除以得到另一种货币。这就是我目前处理货币的方式
第三方API获取
USD
的货币汇率。示例响应{ base: 'USD', rates: { INR: 80.8653858542, GBP: ... } }
XXX
与INR
有一个恒定的关系,例如1 XXX = 200 INR
。这个比率永远不会改变。我选择 INR 是因为这是我的银行账户货币。我使用虚拟货币来确保无论汇率如何,我始终可以向用户显示可预测的金额。USD
的任何费率,我都将其转换为 XXX
,即 usdToXXX = usdToInr/200 = 80.8653858542/200 = 0.404326929271
,最后价目表变为`{ base: XXX, rates: { INR: 200, USD: 0.404326929271 }