JavaScript数字类型对于货币操作有多安全?

JavaScript数字类型对于货币操作有多安全?,javascript,currency,Javascript,Currency,使用JavaScript数字类型(64位双精度)进行货币操作安全吗?我们计划为小型企业开发一个软件,金额通常不到10万美元,但我认为数字可能会大得多,因为我们使用当地货币,例如,1美元=6.5人民币 我知道可能会失去精确性,但在现实世界中有多糟糕 我还建议我们可以跳过像这样的问题 0.2 + 0.1 = 0.30000000000000004 因为在使用当地货币设置截断数字后,它将是相同的,例如$0.30 有些人还建议通过将数值乘以100来缩放数值,但我不确定这是否适用于所有情况,因为我建议可

使用JavaScript数字类型(64位双精度)进行货币操作安全吗?我们计划为小型企业开发一个软件,金额通常不到10万美元,但我认为数字可能会大得多,因为我们使用当地货币,例如,1美元=6.5人民币

我知道可能会失去精确性,但在现实世界中有多糟糕

我还建议我们可以跳过像这样的问题

0.2 + 0.1 = 0.30000000000000004
因为在使用当地货币设置截断数字后,它将是相同的,例如
$0.30


有些人还建议通过将数值乘以100来缩放数值,但我不确定这是否适用于所有情况,因为我建议可能存在点后超过2位数的货币。

我认为最好的方法是使用特殊的库

例如:

0.3 - 0.1                           // 0.19999999999999998  
x = new BigNumber(0.3)
x.minus(0.1)                        // "0.2"
x                                   // "0.3"

我建议你在处理金钱问题时使用整数。而且不可靠,因此最好使用固定类型进行货币计算

然而,有一个图书馆经常被用来处理与金钱有关的计算


这里有一个很好的参考和相关的帖子:

你能把第一个回答的答案标记为答案吗?