1. 现象
- 明明只有一位小数,但是最后出来很多位
- 0.1 + 0.7 = 0.799999999999999
- 59.999999999999999 不小于 60
- 诸如此类问题
2. 原因
- 计算机最终执行或识别的符号只有0和1,二进制
- 计算机中有一套完善的转换机制,所有内容,不管是文字,字符,任何数据,图片,声音,视频,最终都会被解析成二进制
- 计算机对于小数的计算,会产生误差
3. 解决
- 主动保留n为小数,得到数据类型是字符
- ` num = num.toFixed(n); `
- 转成数值
- ` num = Number(num); `