由于64位浮点表示,是否有解决JavaScript中臭名昭着的浮点数学错误的问题? Is floating point math broken?
我试图制作基于JavaScript的数学密集型应用程序,但是,由于JavaScript中的这个错误,它总是导致输出不准确。
例如: 0.1 + 0.2 = 0.30000000000000004 而预期的是 0.1 + 0.2 = 0.3
我想知道金融机构(PayPal)是如何继续使用javascript应用程序的。
答案 0 :(得分:5)
"解决方案" (非)错误是忽略它,并确保使用适当的函数,即toFixed(n)
,以显示所需小数位数的数字。
了解值的内部表示与如何向最终用户提供值之间的区别非常重要。
答案 1 :(得分:2)
您可以使用https://github.com/ekg/fraction.js库作为中间值,并将最终结果转换回十进制值以最大限度地减少错误。