取巧解决js eval()计算精度丢失问题

发布时间 2023-12-18 09:48:27作者: Chaplink

javaScript中存在小数点精度丢失的问题是由于其使用的浮点数表示方式。JavaScript采用的是双精度浮点数表示法,也称为IEEE 754标准,它使用64位来表示一个数字,其中52位用于表示有效数字,而其他位用于表示符号、指数和特殊情况。

由于使用有限的位数来表示无限的小数,JavaScript无法准确地表示某些小数。其中一个典型的示例是0.1,它在二进制中是一个无限循环的小数。当我们将0.1这样的小数转换为二进制进行存储时,存在近似表示的误差,因此在进行计算时会出现精度丢失的问题。
image
因为涉及到配置化 且包含括号运算 自己写方法解决这个精度丢失问题麻烦。所以还是基于eval()计算后的值做解决方法 data是eval()计算后得出的值

data = Number(data.toFixed(5))
// 我这边只取到5 可以往后多取几位。精度更高一些。由于我这边的业务取到5就够了 如果需要保留两位小数 在toFixed一遍即可

image