我正在使用JavaScript创建一个预算应用程序。我必须让JavaScript执行大部分操作。因此,我有一些控件,用户可以更改类别的所需金额,我的应用程序会显示子类别的新金额。
例如,如果我有以下内容: +汽车 $50.23 - 汽油 $30.25 - 维护 $6.27 - 保险 $10.02 - ...
如果用户将汽车的金额从$50.23更改为$90.00,则其他类别的金额将反映其父级类别中的百分比增加量。
问题是,在进行几次操作后,我会失去精度并且产生一些不良问题。大多数情况下,数字不会按照应该的方式相加。在几次更改汽车金额之后将其设置为0后,其他金额并不总是变为0,并且有时它们会低于0,导致我得到NaN。因此,如果我稍后将汽车更改为大于0的值,我的NaN将保持NaN。
我刚听说有人说JavaScript中的小数是近似值,这是另一个问题。我尝试谷歌搜索以查看是否属实,但找不到任何信息(也许我没有使用正确的术语)。
我相信你们中的一些人遇到过类似的问题,你们有什么建议?
有人建议将原始数字乘以100,然后进行所有操作,但我担心这不会帮助我摆脱失去精度的问题。
你们有什么想法吗?
非常感谢您的帮助!
例如,如果我有以下内容: +汽车 $50.23 - 汽油 $30.25 - 维护 $6.27 - 保险 $10.02 - ...
如果用户将汽车的金额从$50.23更改为$90.00,则其他类别的金额将反映其父级类别中的百分比增加量。
问题是,在进行几次操作后,我会失去精度并且产生一些不良问题。大多数情况下,数字不会按照应该的方式相加。在几次更改汽车金额之后将其设置为0后,其他金额并不总是变为0,并且有时它们会低于0,导致我得到NaN。因此,如果我稍后将汽车更改为大于0的值,我的NaN将保持NaN。
我刚听说有人说JavaScript中的小数是近似值,这是另一个问题。我尝试谷歌搜索以查看是否属实,但找不到任何信息(也许我没有使用正确的术语)。
我相信你们中的一些人遇到过类似的问题,你们有什么建议?
有人建议将原始数字乘以100,然后进行所有操作,但我担心这不会帮助我摆脱失去精度的问题。
你们有什么想法吗?
非常感谢您的帮助!
0.1 + 0.2
不等于== 0.3
,所以即使在这种情况下也会出现这种情况。 - T.J. Crowder