1、常见精度问题如:0.1+0.2,1.1*1.1
2、有很多同学将浮点数扩大成整数,直接乘以10^N,其实这也会可能导致误差,例如 0.57*100 => 56.99999999999999;另外除法运算也可能导致误差,5.7/10 => 0.5700000000000001;记住,包含浮点数的加减乘除都可能导致计算误差。(参考:https://zhuanlan.zhihu.com/p/28162086)
3、参考(https://github.com/camsong/blog/issues/9)
开源库 | 地址 | 描述 | 备注 |
mathjs | https://github.com/josdejong/mathjs | Math.js 是专门为 JavaScript 和 Node.js 提供的一个广泛的数学库。它具有灵活的表达式解析器,支持符号计算,配有大量内置函数和常量,并提供集成解决方案来处理不同的数据类型 像数字,大数字(超出安全数的数字),复数,分数,单位和矩阵。 功能强大,易于使用。 | 支持web和node |
deciml.js | https://github.com/MikeMcl/decimal.js | 为 JavaScript 提供十进制类型的任意精度数值。 | 支持web和node |
bignumber.js | https://github.com/MikeMcl/bignumber.js | 一个用于任意精度十进制和非十进制算术的JavaScript库。 | |
big.js | https://github.com/MikeMcl/big.js | 一个小的、快速的JavaScript库,用于任意精度的十进制运算。 | 上边图片的“here”的超链接为https://github.com/MikeMcl/big.js/wiki 可以查看deciml.js、bignumber.js、big.js三者区别 |