一、浮点精度问题
0.1+0.2=0.30000000000000004
0.2+0.3=0.5 没有精度问题
0.1+0.7= 0.7999999999999999
0.2+0.4=0.6000000000000001
0.3-0.2= 0.09999999999999998
1.5-1.2=0.30000000000000004
35.41*100=3540.9999999999995
19.9*100=1989.9999999999998
0.3/0.1=2.9999999999999996
1.产生原因
js数值型包含整数、浮点, ---Number 64位
最高位--符号位 存储指数 尾数位--超出部分自动拾取
1 11位 52位
0.1
0.0001100 1100 1100 .....(1100的循环)
0.2
0.0011001100110011.....(0011的循环)
0.1+0.2 相加有,多余部分 被舍掉,产生误差
2、解决办法
0.1+0.2=0.3
(1)乘以10,再计算
(0.1*10+0.2*10)/10=0.3
(2)toFixed() 截取位数,四舍五入
a=0.1+0.2
a.toFixed(1) 0.3
toFixed问题
1.35.toFixed(1) 1.4
1.335.toFixed(2) 1.33
1.3335.toFixed(3) 1.333
优化toFixed
方法1:将获取的小数转换为字符串
根据小数点的下标判断截取小数位数的下标
判断截取小数的后一位
四舍还是五入 对截取小数位进行操作
Number.prototype.mytoFixed=function(b){
var a = this.toString() //11.334
var c = (a.substring(0,a.indexOf(".")+1)).length //3
var num =String(a).substring(0,c-1+b)//11.3
if(String(a)[c+b] >= 5){