用.toLocaleString()替换ParseFloat(.ToFixed())以获得精确的钱

时间:2019-05-21 20:19:50

标签: javascript

众所周知,在javascript中添加十进制(float)值时,有时会得到有趣的结果。示例:

0.1 + 0.2         ->  0.30000000000000004

要解决我用.ParseFloat()实现.toFixed()的问题,就像有这么多的SO问题可以作为答案一样:

parseFloat((profitTotal - taxesTotal).toFixed(10))

然后将其转换为货币,我从另一个SO答案中总结出来:

(parseFloat((profitTotal - taxesTotal).toFixed(10))).toLocaleString('en-US', {style: 'currency', currency: 'USD',}))

但是,我突然意识到我可以消除ParseFloattoFixed并执行以下操作:

(profitTotal - taxesTotal).toLocaleString('en-US', {style: 'currency', currency: 'USD',})

...并在大多数情况下以正确的值结束。到目前为止,这似乎在我测试过的每种情况下都有效(不是很多)。我认为我永远不会用太多小数位结束。但是,我担心在某些情况下我最终可能会花掉几分钱?

有人知道我的最后一次转换在加/减钱时是否能正常工作吗?

0 个答案:

没有答案