因为JavaScript有它的浮动特性(例如0.1+0.2是〉0.3,在除法中也是如此),如何处理货币转换?通常货币转换率是浮动的,从6个或更多的小数点开始。将它们从一种货币转换为另一种货币,似乎很容易出现javascript浮点错误。虽然货币转换是相当常见的任务,我想知道人们通常是怎么处理这件事的?
目前,我没有任何解决方案,也不确定它过去是否引起过问题。即使我遇到过这个问题,它也很可能被忽略。我只是使用我拥有的任何货币汇率,然后乘/除来获得另一种货币。这就是我目前处理货币的方式
1.从3rd party API获取USD
的货币汇率。示例响应{ base: 'USD', rates: { INR: 80.8653858542, GBP: ... } }
1.我假设虚拟货币XXX
与INR
具有恒定的关系,例如1 XXX = 200 INR
。此汇率永远不会改变。我选择INR是因为这是我的银行帐户货币。我使用虚拟货币是为了确保无论汇率如何,始终可以向用户显示可预测的金额。
1.我使用这个虚拟货币作为基础货币,所以无论我从第1步中得到的USD
的汇率是多少,我都将其转换为XXX
,即usdToXXX = usdToInr/200 = 80.8653858542/200 = 0.404326929271
,最后汇率卡变为'{ base:XXX,费率:{印度卢比:200,美元:0.404326929271英镑)
1.现在,对于所有转换,我使用XXX的费率卡
1条答案
按热度按时间mzillmmw1#
您可以为JavaScript使用“任意精度的十进制/浮点型”库-找到一个适合您的情况的库。
据我所知,这些算法的工作方式是将数字存储为不同的表示形式,并使用不同的算法--类似于“手工”加/减/乘/除数字的技术
相反,原始数值类型(整数、浮点数等)直接使用处理器,因此存在溢出、精度错误等问题