-
计算机使用二进制存储数据
- 整数用二进制没有误差,如
9
在计算机中表示为1001
-
而有的小数无法用二进制表示,如
0.2
用二进制表示为1.10011001100....
无限循环下去了- 所以,累加小数时就会出现误差
- 这不仅仅是前端javascript会出现这个问题,所有的计算机语言都这样
- 整数用二进制没有误差,如
-
如果项目中频繁的要做小数点的运算,怎么办?
- 要么把小数点转换成整数 运算后 再把结果转换为小数
- 要么使用第三方库 https://www.npmjs.com/package/mathjs
个人觉得没必要太深究为什么小数用二进制表示会一直循环下去这个问题 这个是计算器很底层的问题 当然真的很有兴趣可以去了解《松本行弘的程序世界》这本书很适合新手且通熟易懂 但是没必要太深究下去