JavaScript 中的货币转换和浮点精度

问题描述 投票:0回答:0

由于 JavaScript 对浮点数有怪癖(例如 0.1+0.2 > 0.3,除法也类似),如何处理货币转换?通常货币兑换率是浮动的,从 6 位或更多小数点开始。将它们从一种货币转换为另一种货币,再转换为另一种货币,似乎很容易出现 javascript float 错误。虽然货币转换是很常见的任务,但我想知道人们通常如何处理这个问题?

目前,我没有任何解决方案,也不确定它是否在过去引起过问题。即使我有这个问题,也很可能会被遗漏。我简单地使用我拥有的任何货币汇率并乘法/除以得到另一种货币。这就是我目前处理货币的方式

  1. 第三方API
    获取USD的货币汇率。示例响应
    { base: 'USD', rates: { INR: 80.8653858542, GBP: ... } }
  2. 我假设一个虚拟货币
    XXX
    INR
    有一个恒定的关系,例如
    1 XXX = 200 INR
    。这个比率永远不会改变。我选择 INR 是因为这是我的银行账户货币。我使用虚拟货币来确保无论汇率如何,我始终可以向用户显示可预测的金额。
  3. 我用这个虚拟货币作为基础货币。因此,无论我从第 1 步收到
    USD
    的任何费率,我都将其转换为
    XXX
    ,即
    usdToXXX = usdToInr/200 = 80.8653858542/200 = 0.404326929271
    ,最后价目表变为`{ base: XXX, rates: { INR: 200, USD: 0.404326929271 }
  4. 现在所有的转换,我用XXX的这张价目表
javascript precision currency floating-accuracy
© www.soinside.com 2019 - 2024. All rights reserved.