昨天写完需求准备跑路,没想到出现了bug,经过二次测试,发现了问题所在。简单举个例子。
产生原因: 在 JavaScript 中整数和浮点数都属于 Number
数据类型,所有数字都是以 64 位浮点数形式储存,即便整数也是如此.
十进制的0.1
和0.2
都会被转换成二进制,但由于浮点数用二进制表达时是无穷的, 导致了精度问题.
解决方案:
1. 先把需要运算的小数扩大成整数,运算后在缩小相同倍数。
2.使用toFixed()
注意两种方法拿到的最终数据的数据类型
由于本人能力有限,有不足之处,多多谅解。欢迎留言指导。