我正在尝试提出一种解决方案,以避免在我的应用程序中进行计算时出现小数错误。我已经看到了一些解决方案,但仍有疑问。我的理解是浮点数不能准确地存储在 Javascript 中,当数字应该为 0 时,数字在其轨迹中得到一个非 0 数字。顽皮的数字,或者不是顽皮的数字 :) 无论如何......
eg. 0.1 + 0.2 = 0.xxxxxxx4
第一个问题,解决方案是不允许数字在任何数字中具有 > x 十进制数字,因为 Javascript 无法处理它?限制精度。
下一个问题,我必须像这样计算字符串:'2 + 2 + 3 * 0.1 + 0.2 * 10^5'
如何确保它得到准确的结果?我只是打算使用 Mathjs,但它不会避免浮点数出错,计算会出错,不是吗?有一些解决方案使用舍入来修剪尾随数字,但我该怎么做呢?我必须编写自己的计算器来对每对数字进行四舍五入吗?
如何确定可接受的小数位数?我猜应用程序的类型很重要,对于大多数计算来说,10 位十进制数字就足够了,例如。金融?计算器在计算时使用多少位数字,只是您在屏幕上可以看到的数字吗?
下一个问题,如果 Javascript 将数字变成他们不应该的数字,为什么 Javascript 不限制十进制数字的数量?看起来像 1 + 1 = 2 ......对不起,它没有。这很令人困惑。